我目前正在将大型 TypeScript 代码库转换为严格的空检查。代码库有许多带有可选成员的类型:
interface MyInterface {
member1?: number;
member2?: string;
}
此外,它使用 type Nullable<T> = T | null,并且有许多return null语句。
现在我面临许多编译器错误,这些错误基本上表明T | null无法转换为T | undefined,反之亦然,就像在这个例子中一样:
interface MyInterface {
member1?: number;
member2?: string;
}
const myFunction = () => {
return null;
}
const item: MyInterface = {};
item.member1 = myFunction(); // <== can't assign null to undefined
null我喜欢 TypeScript 中严格的 null 检查,但我没有用和之间的区别undefined。我可以理解在某些用例中区分null和是有意义的undefined,但在这个项目中,它实际上并没有发挥重要作用。这些函数return null什么都不返回——不管是null还是undefined. 可选成员也是如此——它们要么设置为一个值,要么不设置。
我也更喜欢不转换member1?: number;to member1: Nullable<number>;,而是保持return null原样
我可以至少在 TypeScript 中禁用undefinedand之间的区别吗?null