小编Eri*_*son的帖子

如何让 Typescript 了解在 value 为 null 时抛出的函数调用后 value 不能为 null

我有一个函数检查值是否不为空,如果值为空则抛出异常。如果它不抛出并成功返回,我知道该值不可能为空。

如果不求助于 if 情况,Typescript 似乎无法理解这一点。有什么办法可以实现这一点吗?

请参阅下面的代码以进行说明:

function ensureNotNull<T>(arg: T | null, paramName: string): arg is Exclude<typeof arg, null> {
    if (arg === null) {
        throw new Error(`arg '${paramName}' is null`);
    }

    return true;
}

var value: string | null = null;

function doStuffIfValueNotNull(value: string | null) : void {
    ensureNotNull<string>(value, "value");
    var strLen = value.length; //Error with strictNullChecks
}
Run Code Online (Sandbox Code Playgroud)

typescript

3
推荐指数
1
解决办法
400
查看次数

禁用允许将只读类型分配给非只读类型

我一直在看打字稿中的只读类型。可悲的是,它没有像我希望的那样起作用。例如,请参见下面的代码:

interface User{
    firstName: string;
    lastName: string;
}

const user: Readonly<User> = {
    firstName: "Joe",
    lastName: "Bob",
};

const mutableUser: User = user; //Is it possible to disallow this?

user.firstName = "Foo" //Throws error as expected
mutableUser.firstName ="Bar"//This works
Run Code Online (Sandbox Code Playgroud)

是否有可能以不允许将其分配给非只读类型的方式使用只读类型?如果不是,我可以通过其他方式解决吗?

immutability typescript

2
推荐指数
1
解决办法
445
查看次数

标签 统计

typescript ×2

immutability ×1