📅  最后修改于: 2023-12-03 15:26:34.534000             🧑  作者: Mango
在 TypeScript 中,我们可以声明一个对象并为其添加属性和方法。通常情况下,我们会直接使用常量作为对象的键,例如:
const myObj = {
name: 'Alice',
age: 30,
};
但是,有时我们需要从其他地方获取对象的键,例如从一个枚举中。在这种情况下,我们可以借助索引签名来实现:
enum MyEnum {
FOO = 'foo',
BAR = 'bar',
}
const myObj = {
[MyEnum.FOO]: 'hello',
[MyEnum.BAR]: 'world',
};
这样,我们就可以使用 MyEnum
中定义的键来访问 myObj
的属性:
console.log(myObj[MyEnum.FOO]); // 输出 'hello'
console.log(myObj[MyEnum.BAR]); // 输出 'world'
不仅如此,我们还可以从其他对象中获取键,并用它来定义另一个对象的属性。例如:
const otherObj = {
baz: true,
};
const myObj = {
...otherObj,
[MyEnum.FOO]: 'hello',
[MyEnum.BAR]: 'world',
};
console.log(myObj); // 输出 { baz: true, foo: 'hello', bar: 'world' }
需要注意的是,如果从其他对象中获取的键名和我们自己手动定义的键名发生冲突了,那么后面的键值对会覆盖前面的。例如:
const otherObj = {
foo: false,
};
const myObj = {
...otherObj,
[MyEnum.FOO]: 'hello',
[MyEnum.BAR]: 'world',
};
console.log(myObj); // 输出 { foo: false, bar: 'world' }
在这里,otherObj
中定义的 foo
属性被 myObj
中的 [MyEnum.FOO]: 'hello'
覆盖掉了。
总之,使用来自其他对象的 TypeScript 对象键可以帮助我们更灵活地管理对象的属性。