闭包编译器类型的TypeScript等价物是什么!对象<;字符串,MyClass>;?
在中,闭包编译器类型的TypeScript等价物是什么!对象<;字符串,MyClass>;?,typescript,google-closure-compiler,Typescript,Google Closure Compiler,在中,!Object(或者相当于!Object)是一种值类型,它是一个用作字典的(非空)对象,具有任意字符串作为键,MyClass的(非空)实例作为值。(请注意,如果myDict属于此类型,则myDict[str]可能是未定义的,但myDict中的str意味着MyClass的myDict[str]实例) 如何在Typescript类型系统中表示相同的类型 是否有任何方法可以额外指定这样一个dictionary对象的原型必须为null(即由object.create(null))生成?(据了解,闭
!Object
(或者相当于!Object
)是一种值类型,它是一个用作字典的(非空)对象,具有任意字符串作为键,MyClass的(非空)实例作为值。(请注意,如果myDict
属于此类型,则myDict[str]
可能是未定义的
,但myDict中的str
意味着MyClass的myDict[str]实例
)
如何在Typescript类型系统中表示相同的类型
是否有任何方法可以额外指定这样一个dictionary对象的原型必须为null(即由object.create(null)
)生成?(据了解,闭包类型系统没有提供一种方法来指定这一点。)
!Object
(或相当于!Object
)是一种值类型,它是一个用作字典的(非空)对象,具有任意字符串作为键,MyClass的(非空)实例作为值
这将是:
为了确保没有任何内容是null
,您还需要启用(它也包含在中)。这将在任何地方删除null
作为可能的值,除非明确提及,例如,MyClass | null
将允许null
,但MyClass
本身将不允许
有没有办法另外指定这样一个dictionary对象的原型必须为null
不,不可能。TypeScript不区分用作原型的内容。它只对类型相等进行结构匹配,因此Object.create(null)
和{}
是等效的,因为它们只是对象。类型系统不会检查用于创建给定对象的对象,只要它似乎与接口匹配
!Object
(或相当于!Object
)是一种值类型,它是一个用作字典的(非空)对象,具有任意字符串作为键,MyClass的(非空)实例作为值
这将是:
为了确保没有任何内容是null
,您还需要启用(它也包含在中)。这将在任何地方删除null
作为可能的值,除非明确提及,例如,MyClass | null
将允许null
,但MyClass
本身将不允许
有没有办法另外指定这样一个dictionary对象的原型必须为null
不,不可能。TypeScript不区分用作原型的内容。它只对类型相等进行结构匹配,因此Object.create(null)
和{}
是等效的,因为它们只是对象。类型系统不会检查用于创建给定对象的对象,只要它看起来与接口匹配。记录
应在“strict”下工作:true
,该类型被写入{[key:string]:MyClass}
记录
应在“strict”下工作:true
,该类型被写入{[key:string]:MyClass}
。
const myDict: Record<string, MyClass> = {};
const myDict: { [key: string]: MyClass } = {};