繁体   English   中英

如何从 function 参数中获取计算属性名称的文字类型?

[英]How to get a literal type from a function argument for a computed property name?

请考虑以下代码:

const fn = (name: string) => {
  return { [name]: "some txt" };
};

const res = fn("books"); // books or any other string

TS 将res识别为以下类型:

const res: {
  [x: string]: string;
}

我想让 TS 知道res有一个属性books

const res: {
  books: string;
}

我尝试了很多东西,但似乎没有任何效果。 有可能吗? 这是一个已知问题吗?

你必须像这样创建一个通用的 function :

const fn = <T extends string>(name: T): { [key in T]: string } => {
  return { [name]: "some txt" } as any;
};

const res = fn("books");

这似乎是 TypeScript 中的一个错误,它不允许这样的事情,这就是你需要as any的原因。 有关交互式示例,请参见此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM