type A = {
name: string
}
const a = { name: '', x: 12 }
const aa: A = a //no error
但是:
type A = {
name: string
}
const aa: A = { name: '', x: 12 } // error ts2322
这两个代码段在js中的含义完全相同,为什么第一个代码段是有效的ts代码,而第二个代码段则无效?
它看起来很像ts错误,但在搜索互联网后我没有任何提示
答案 0 :(得分:0)
好的,ts对文字和变量的处理有所不同,而与js并没有什么不同
答案 1 :(得分:0)
在以下任务中:
const a = { name: '', x: 12 }
a
的类型应从其分配的值(即等同于{ name: string; x: number; }
)推论得出。
对于后续任务:
const aa: A = a
我相信TypeScript编译器会接受这种情况,因为结构上推断的类型满足A
类型(即,尽管有多余的A
,但它具有x: number
类型所需的所有属性。 )。
我怀疑编译器对第二个片段不太宽容,因为您无法使用不属于类型A
的属性进行初始化。