【发布时间】:2021-12-14 11:08:01
【问题描述】:
为什么这个例子在 Typescript 中没问题:
class Person {
name: String;
age: number;
}
class Customer {
name: String;
}
const cust: Customer = new Person();
但不是这个例子?
type Boj = {boj: number};
let b: Boj = {boj: 3, jj: 3};
不应该都使用结构类型系统吗?
【问题讨论】:
-
你告诉 TS
b的类型是Boj。Boj没有jj属性,所以你不能分配它……这就是 TypeScript 的重点:类型安全。如果你想分配属性而不考虑类型,请使用any或不使用 TypeScript。 -
@Cerbrus,实际上这是 Typescript 检查额外属性的特殊情况。只有对象字面量有多余的属性检查,否则允许额外的属性。
标签: typescript types