Javascript 包含和不包含显式类型的变量的Typescript验证规则
方法1/2的区别是什么?为什么方法2失败,因为类型“{name:string;age:number;}”不能分配给类型“obj”。Object literal只能指定已知的属性,并且类型“obj”中不存在“age”。error,但不是Approach 1Javascript 包含和不包含显式类型的变量的Typescript验证规则,javascript,typescript,type-conversion,Javascript,Typescript,Type Conversion,方法1/2的区别是什么?为什么方法2失败,因为类型“{name:string;age:number;}”不能分配给类型“obj”。Object literal只能指定已知的属性,并且类型“obj”中不存在“age”。error,但不是Approach 1 有人能帮我理解Typescript验证规则吗?这种行为称为[多余属性检查][1] 对象文字得到特殊处理,并在将其分配给其他变量或作为参数传递时进行多余的属性检查。如果对象文字具有“目标类型”不具有的任何属性,则会出现错误: 在第一个示例中,您并
有人能帮我理解Typescript验证规则吗?这种行为称为
[多余属性检查][1]
对象文字得到特殊处理,并在将其分配给其他变量或作为参数传递时进行多余的属性检查。如果对象文字具有“目标类型”不具有的任何属性,则会出现错误:
在第一个示例中,您并没有收到错误,因为您使用变量引用而不是文本
顺便说一句,按照惯例,您的类型应该大写
type Obj={name:string}
而不是
type obj={name:string}
它更容易阅读
顺便说一句,我相信你的问题是复杂的,所以请随意标记它
type obj = {
name: string;
}
type mask = {
o: obj;
}
// Approach 1
const o1 = {
name: "raj",
age: 24
}
const t1: mask = {
o: o1
}
// Approach 2
const t2: mask = {
o: {
name: "raj",
age: 24
}
}