gpt4 book ai didi

typescript - 如何检查字符串是否是 TypeScript 中特定接口(interface)的属性

转载 作者:行者123 更新时间:2023-12-05 05:13:02 26 4
gpt4 key购买 nike

我确实有一个真实的情况,我需要使用字符串文字按名称引用属性。我想让它成为类型安全的,感觉就像在 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!

我相信答案是 <>as TypeScript 中的操作是“类型断言”而不是“类型转换尝试”。上面的前两个 const 基本上是在说,“相信我,这 MyInterface 的键”,而第三个 const 正在尝试类型化赋值,但失败了。

我想知道我的看法是否正确,如果是这样,是否有其他内联方法可以在不创建临时变量的情况下测试字符串文字是给定接口(interface)的键。

最佳答案

关于前两个 const 声明没有出错的原因,你是对的。

在变量上没有显式类型注释的情况下出现错误的唯一方法是使用辅助函数:

interface MyInterface {
foo: string,
}
const key = <T>(o: keyof T) => o;
const barName = key<MyInterface>('bar') // error
const fooName = key<MyInterface>('foo') // ok

您也可以按原样保留 const 声明,const 将被键入为与字符串文字相关联的字符串文字类型,您将在第一次出现错误您可以使用它来索引 MyInterafce 的实例,尽管这可能不适用于所有情况。

关于typescript - 如何检查字符串是否是 TypeScript 中特定接口(interface)的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54040291/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com