根据TypeScript Literal Types,我们可以在类型位置引用特定的字符串和数字。因此,下面的内容是有效的。但是,这不适用于variable is initialized with an object,因为TypeScript假定该对象的属性稍后可能会更改值。这样做的workaround是添加一个类型断言(在其中一个位置-- change 1和change 2)。TypeScript在与数字进行比较时能够正确编译,但在涉及其他字符串时却无法正确编译?
我正在尝试将新的TypeScript 3.7可选链接与断言签名结合使用。 根据我对可选链接的了解,如果x?.y是非空的,我希望x总是非空的。不幸的是,最新的TypeScript 3.7 nightly似乎没有反映这一点: declare function assertNonNull<T>(x: T | null): asserts x isassertNonNull(x);
doSomething(x.y); // No error, y is already correctly narrowed down