Typescript 打字稿';字典';对象与具有已知成员的对象的类型访问器?
我在网上视频课程之后学习TypeScript——我的背景是“结构化”类型语言(C,ActionScript 3),但TypeScript中的一些内容对我来说是新的 我特别想了解对象的“dictionary”类型Typescript 打字稿';字典';对象与具有已知成员的对象的类型访问器?,typescript,Typescript,我在网上视频课程之后学习TypeScript——我的背景是“结构化”类型语言(C,ActionScript 3),但TypeScript中的一些内容对我来说是新的 我特别想了解对象的“dictionary”类型 interface dict { [accessString: string]: { name: string; address: string } | undefined } 所以我在这里说的是,一个依附于接口的对象将接受访问,比如 const userD
interface dict {
[accessString: string]: {
name: string;
address: string
} | undefined
}
所以我在这里说的是,一个依附于接口的对象将接受访问,比如
const userData = myObject['someString']
const userData2 = myObject.someString
和userData
和userData2
将是同一个对象,其中包含name
和address
字段,对吗?或者这个字段可能不存在于对象上,在这种情况下,我们会得到未定义的
?(这就是为什么有必要在接口定义中添加| undefined
)
嗯。但从概念上讲,这与下面的对象接口定义有何不同
interface notDict {
someString: {
name: string;
address: string
}
在本例中,我们是说我们知道对象上有一个名为someString
的字段,而在我们最初的“字典类型”定义中,我们没有对字段是什么表示任何意见?[accessString:string]:{}
定义和普通对象
定义之间还有其他区别吗?还是我看得不对
谢谢你的指导 你基本上都记下来了。最大的区别是:
interface-Dict
允许您根据需要命名父对象,而interface-notDict
强制父对象的名称为someString
Dict
类型可以是空对象,notDict
类型始终需要所有字段Dict
类型定义为非空对象后,所有字段都是必需的。(您可以在键后使用?
(例如名称?:…
)来绕过此问题)参见示例。另一个细节是,字典类型表示有0个或多个键,而当您显式声明键时,您也显式说明对象将有多少成员。谢谢——在您的示例中,当您有
const a3:dict={anyStringName:{name:'hello'}//一旦定义了对象,所有键都是必需的
-“所有键都是必需的”在这里是什么意思?它意味着需要对象中的键名称和地址。