typescript - Typescript 接口通用属性名称
问题描述
假设我们有两个变量
const x='property1'
const y='property2'
我们有功能
function foo<key extends keyof MapInterface>(name: key, props: (MapInterface[key]))
这个界面应该看起来像
interface MapInterface{
'property1':any;
'property2':any;
}
是否可以像通过调用变量 x,y 一样通用地创建接口
interface MapInterface{
x:any; //return 'property1':any;
y:any; //return 'property2':any;
}
解决方案
是的,从 TypeScript 2.7 开始,您可以使用在拉取请求Microsoft/TypeScript#15473中引入的常量命名属性来执行此操作。您唯一缺少的是您需要使用计算属性语法(属性名称必须用括号括起来):
const x = 'property1'
const y = 'property2';
interface MapInterface {
[x]: any;
[y]: any;
}
declare const mapInt: MapInterface;
mapInt[x]; // works
mapInt[y]; // works
mapInt.property1; // also works
mapInt.property2; // also works
希望有帮助。祝你好运!
推荐阅读
- ios - swift 5中每个视图控制器中的注销按钮
- linux-kernel - 我们可以使用内核空间的文件描述符吗?
- c# - 如何修复不一致的可访问性错误
- reactjs - 当我使用浏览器返回问题时,Reactjs 组件调用构造函数
- r - R中正则表达式中双方括号和单方括号的区别?
- plivo - 如何验证 X-PLIVO-SIGNATURE
- mysql - 在检查其他表时更新表
- visual-studio-code - 是否可以在 package.json 中格式化 VS Code 属性标题?
- vb.net - 错误 System.InvalidOperationException' 在 vb 上的 System.Data.dll 中发生
- javascript - 如果没有结果,如何停止 keyup ajax 调用?