我尝试创建一个具有变量值作为属性的类型
例如:
const myProp: string = 'my prop';
type Foo ={
[myProp]: string
};
我希望我能做到:
const test: Foo = {
[myProp] = myProp
}
但是出现以下错误:
[ts]类型文字中的计算属性名称必须直接引用
内置符号。
最佳答案
如果要声明与字符串常量具有相同属性名称的类型,则可以使用以下语法(查找类型语法)
const myProp = 'my prop';
type Foo = {
[P in typeof myProp]: string
};
const test: Foo = {
[myProp]: myProp
}
如果您想拥有其中几个键,则可以使用联合类型:
const myProp = 'my prop';
const otherProp = "otherProp"
type Foo = {
[P in (typeof myProp | typeof otherProp)]: string
};
const test: Foo = {
[myProp]: myProp,
[otherProp]: otherProp
}
打字稿默认库实际上提供了与上述查找类型声明等效的类型,名为
Record
。使用此方法,您可以将类型写为:type Foo2 = Record<typeof myProp, string>;