如下面的代码所示,我声明了一个名为 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);
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.