【发布时间】:2016-02-08 08:16:50
【问题描述】:
没什么大不了的,但我想知道是否可以使用非字符串键访问对象并定义无论访问什么它都会返回相同的类型。我可以弄清楚如何分别做这两件事,或者可以“费力地”一起做。
我想我想要类似的东西:
var DEFINITIONS: {[key: 'non-string']: Definition} = { ... }
或
var DEFINITIONS: {[any]: Definition} = { ... }
我猜这个语法不存在(还没有?;))。
定义对象DEFINITIONS的返回类型,但必须使用字符串键访问:
interface Definition {
id: number;
type: string;
}
var DEFINITIONS: {[key: string]: Definition} = {
v1: {
id: 4,
type: 'abc'
}
}
DEFINITIONS['v1']
可以使用非字符串键访问DEFINITIONS,但不定义返回类型:
interface Definition {
id: number;
type: string;
}
var DEFINITIONS = {
v1: {
id: 4,
type: 'abc'
}
}
DEFINITIONS.v1 // Rightly does not show as having interface of `Definition`
或费力:
interface Definition {
id: number;
type: string;
}
var DEFINITIONS: {v1: Definition, v2: Definition, v3: Definition, etc...} = {
v1: {
id: 4,
type: 'abc'
},
v2: { ... },
v3: { ... },
etc ...
}
DEFINITIONS.v1 // Great! Has explicit interface of Definition
// or:
var v1: Definition = {id: 4, type: 'abc'};
var DEFINITIONS2 = {v1};
附言我不知道使用 ['v1'] 或 v1 之类的密钥进行访问的正确技术术语是什么。
【问题讨论】:
标签: object typescript key