gpt4 book ai didi

javascript - 字符串变量值作为类型中的属性

转载 作者:行者123 更新时间:2023-11-28 17:42:15 26 4
gpt4 key购买 nike

我尝试创建一个具有变量值作为属性的类型

例如:

const myProp: string = 'my prop';
type Foo ={
[myProp]: string
};

我希望我能做到:

const test: Foo = {
[myProp] = myProp
}

但出现错误:

[ts] A computed property name in a type literal must directly refer to a built-in symbol.

最佳答案

如果您想声明一个与字符串常量具有相同属性名称的类型,您可以使用以下语法(查找类型语法)

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
}

TypeScript默认库,实际上提供了一个与上面的查找类型声明等效的类型,名为Record。使用它,您可以将您的类型编写为:

type Foo2 = Record<typeof myProp, string>;

关于javascript - 字符串变量值作为类型中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47668814/

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