gpt4 book ai didi

typescript - typescript 中的动态属性名称

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

假设我以如下方式从搜索引擎获取数据:

const resultDe = { details_de: "Ein paar Informationen", foo_de:{bar:"barDe"}, code: "1C60" }
const resultEn = { details_en: "Some information", foo_en:{bar:"barEn"} code: "1C60" }

我知道属性的名称,但某些属性具有依赖于语言的后缀,例如 _de_en。有没有办法用 typescript 输入这样的数据?

类似于:

type Result = {
`details_${lang}`: string;
}

最佳答案

您可以use template literals to create types像这样,例如:

type LanguageResult<LangCode extends string> = Record<`details_${LangCode}`, string>;

const enResults: LanguageResult<'en'> = {
details_en: 'test',
};

const enResults: LanguageResult<'de'> = {
details_en: 'test', // <- Error
};

TypeScript Playground


如果您不知道需要什么字符串,则可以简单地使用尽可能广泛的类型(即 string 本身)来允许任何这些代码。例如:

type LanguageResult<LangCode extends string = string> = Record<`details_${LangCode}`, string>;

const anyResults: LanguageResult = {
details_en: 'test',
details_de: 'test',
};

TypeScript Playground

关于typescript - typescript 中的动态属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70702450/

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