工作功能,即使它返回错误的类型

时间:2016-04-10 18:49:19

标签: typescript

我正在使用Codepen.io进行我的第一次使用Typescript的测试,并且我不明白为什么,在使用接口声明函数签名和返回类型之后,我可以返回不同的类型而不会得到任何错误。

我错过了什么吗?

示例代码:

interface IPerson {
    getFullName: () => void;
}

class Person implements IPerson{

constructor(
    public name: string,
    public surname: string
){}

getFullName() {
    return this.name + ' ' + this.surname;
}

}


let p = new Person('John','Doe');

console.log(p.getFullName());

结果:

John Doe 

问题: 为什么要退出' John Doe' (一个字符串)即使我声明了 void 返回类型?

1 个答案:

答案 0 :(得分:2)

TypeScript会抛出编译错误,如下所示:

  

类型'string'不能分配给'void'类型。

然而,Typescript仍将编译为Javascript。 JS本身没有任何类型的概念,因此只记录该值,因为运行时不知道返回类型getFullName()有什么。

如果在编译错误时不进行编译,可以在noEmitOnError中设置tsconfig.json标记。