【发布时间】:2019-05-31 02:31:32
【问题描述】:
我确实有一个现实世界的情况,我需要使用字符串文字按名称引用属性。我想让那个类型安全,感觉就像在 TypeScript 中一样,这应该是可能的。考虑以下简化示例:
interface MyInterface {
foo: string,
}
const barName = <keyof MyInterface>'bar' // No error?
const bazName = 'baz' as keyof MyInterface // No error?
const bopName:keyof MyInterface = 'bop' // Finally, an error!
我相信答案是 TypeScript 中的 <> 和 as 操作是“类型断言”而不是“类型转换尝试”。上面的前两个 const 基本上是在说:“相信我,这 是 MyInterface 的一个键”,而第三个 const 尝试进行类型化赋值,但失败了。
我想知道我是否正确,如果正确,是否有其他内联方法可以测试字符串文字是否是给定接口的键,而不需要创建临时变量。
【问题讨论】:
标签: typescript