为什么打字稿不检查对象数组内容的命名?

时间:2015-07-04 13:50:07

标签: javascript typescript

我编码了这个界面:

interface IExamService {
    exam: IExam;
    exams: IExam[];
}  

interface IExam {
    current: boolean;
    id: number;
    name: string;
    subject: string;
}

并在此处使用:

class ExamService implements IExamService {

    exam: IExam;
    exams: IExam[] = [
        {
            current: false,
            id: 1,
            examId: 1,
            subject: 'x',
            name: 'Exam 1'
        },
        {
            current: false,
            id: 2322,
            examId: 2322,
            subject: 'y',
            name: 'Custom Exam 1'
        }
    ];
}

有人可以告诉我为什么id不会将examId用作错误吗?

2 个答案:

答案 0 :(得分:2)

Typescript接口不会阻止您添加其他属性。从TypeScript手册:

  

请注意,我们的对象实际上具有比此更多的属性,但是   编译器只检查至少存在所需的那些   并匹配所需的类型。   http://www.typescriptlang.org/Handbook#interfaces

您的对象符合IExam界面。添加其他属性不会阻止您的对象符合接口。

答案 1 :(得分:1)

在这里猜测一下,如果你没有实现接口的某个属性,它会不会抱怨?除了接口定义的属性之外,添加额外的属性对我来说不是一个问题。