Javascript 如何区分typescript索引签名和JS计算属性名

Javascript 如何区分typescript索引签名和JS计算属性名,javascript,typescript,Javascript,Typescript,“更改:{[propName:string]:SimpleChange}”有什么作用?当它是可索引对象或计算属性名称时,我有点混淆。{[propName:string]:SimpleChange}只是一个索引签名,它与计算属性没有任何关系 计算属性以对象文本形式出现,根据计算属性的不同,typescript将推断计算属性(如果属性是文本类型)或索引签名(如果属性是属性键基类型): 您还可以显式声明具有计算属性的对象类型,但该属性必须是字符串、数字或符号文字类型: let propName = "

“更改:{[propName:string]:SimpleChange}”有什么作用?当它是可索引对象或计算属性名称时,我有点混淆。

{[propName:string]:SimpleChange}
只是一个索引签名,它与计算属性没有任何关系

计算属性以对象文本形式出现,根据计算属性的不同,typescript将推断计算属性(如果属性是文本类型)或索引签名(如果属性是属性键基类型):

您还可以显式声明具有计算属性的对象类型,但该属性必须是字符串、数字或符号文字类型:

let propName = "a"; // string 
let o = { [propName] : 10 } // {[x: string]: number;}
o["A"] // ok

const constPropName = "a"; // "a"
let o2 = { [constPropName] : 10 } // {[constPropName]: number;}
o2["A"] //err
let propName = "a"; // string 
let o = { [propName] : 10 } // {[x: string]: number;}
o["A"] // ok

const constPropName = "a"; // "a"
let o2 = { [constPropName] : 10 } // {[constPropName]: number;}
o2["A"] //err
const constPropName = "a"; // "a"
type computed = { [constPropName] : number }