我使用的模块具有TS定义,如下所示:
// index.d.ts
interface SomeContext {
// ... other props
thing?: Record<string, any>;
}当我们使用这个模块时,我们保护someContext.thing被定义,所以当我们开始使用它时,它永远不会是未定义的。我们希望在我们的代码中赋予它自己的类型,因为我们知道形状将是什么,但必须执行以下操作才能使其通过TS构建:
const { thing: ourThing } = <{ thing: any }>someContext.thing;这感觉像是错误的方式,因为我们失去了TS通常给我们的安全性和DX。
有没有更好的方法来解决这个问题呢?
发布于 2021-07-26 23:57:46
当你确定事物已定义时,你可以使用感叹号操作符(非空断言操作符)来告诉编译器你知道这个值不会是空的/未定义的。
const thing = someContext.thing!;
https://stackoverflow.com/questions/68532887
复制相似问题