我有一个现实世界的情况,需要使用字符串字面量来引用属性。我希望能够使其类型安全,在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
操作是"类型断言"而不是"类型转换尝试"。上面的前两个常量基本上是在说:"相信我,这是MyInterface的一个键",而第三个常量则是尝试进行类型赋值,并且失败了。我想知道我的理解是否正确,如果是,是否有其他内联方式来测试字符串字面量是否是给定接口的键,而不需要创建一个临时变量。