打字稿:限制对象值的类型
Typescript: limiting types in object values
我正在尝试创建一个大对象,其值仅限于 3 种类型:Texture
、Geometry
、Script
我的对象看起来像这样:
var assets: Assets = {
sky: <Texture>,
ground: <Texture>,
city: <Geometry>,
people: <Script>,
cars: <Script>,
sun: <Circle> // <--This should fail because it's not one of the 3 types
//...
}
如何声明 Assets
接口,使每个键值对中的值仅限于这 3 种类型?我尝试从以下开始:
interface Assets{
key: Texture | Geometry | Script;
}
但是当我分配
时它就中断了
this.assets = {sky: new Texture()}
因为它只需要 key
而不是 sky
。有什么方法可以在不将对象嵌套在对象中的情况下实现这一点?
怎么样:
type Assets = {
[key: string]: Texture | Geometry | Script;
}
该类型将允许您请求的一种类型的字符串键和值。
有关该主题的更多信息:Indexable Types
我正在尝试创建一个大对象,其值仅限于 3 种类型:Texture
、Geometry
、Script
我的对象看起来像这样:
var assets: Assets = {
sky: <Texture>,
ground: <Texture>,
city: <Geometry>,
people: <Script>,
cars: <Script>,
sun: <Circle> // <--This should fail because it's not one of the 3 types
//...
}
如何声明 Assets
接口,使每个键值对中的值仅限于这 3 种类型?我尝试从以下开始:
interface Assets{
key: Texture | Geometry | Script;
}
但是当我分配
时它就中断了this.assets = {sky: new Texture()}
因为它只需要 key
而不是 sky
。有什么方法可以在不将对象嵌套在对象中的情况下实现这一点?
怎么样:
type Assets = {
[key: string]: Texture | Geometry | Script;
}
该类型将允许您请求的一种类型的字符串键和值。
有关该主题的更多信息:Indexable Types