如下面的代码所示,我声明了一个名为 Test 类型,其中一个 key 为 abc 的 value 类型为 ABC 。
[问题]
Typescript 只会检查 Test.abc 里面的 key 类型是否正确,以及是否缺少 key ,但不会检查是否有多余的 key 。
为啥会出现这种情况?以及如何解决嵌套类型验证的问题?
// 声明一个名为 ABC 的类型
export type ABC = {
a: string;
b: number;
c: string;
};
// 声明一个名为 Test 类型,其中一个 key 为 abc 的 value 类型为 ABC
export type Test = {
a: string;
b: number;
c: string;
abc: ABC;
};
// 对象 abc
const abc: ABC = {
a: 'aaa',
b: 111,
c: 'ccc',
};
// 对象 abcd
const abcd = {
a: 'aaa',
b: 111,
c: 'ccc',
d: 'ddd',
};
// 对象 ab
const ab = {
a: 'aaa',
b: 111,
};
// 对象 abc 通过类型检查
const test_1: Test = {
a: 'aaa',
b: 111,
c: 'ccc',
abc: abc,
};
console.log(test_1);
// 对象 abcd 通过类型检查
const test_2: Test = {
a: 'aaa',
b: 111,
c: 'ccc',
abc: abcd,
};
console.log(test_2);
// 对象 ab 没有通过类型检查
const test_3: Test = {
a: 'aaa',
b: 111,
c: 'ccc',
abc: ab,
};
console.log(test_3);