我正在使用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 返回类型?
答案 0 :(得分:2)
TypeScript会抛出编译错误,如下所示:
类型'string'不能分配给'void'类型。
然而,Typescript仍将编译为Javascript。 JS本身没有任何类型的概念,因此只记录该值,因为运行时不知道返回类型getFullName()
有什么。
如果在编译错误时不进行编译,可以在noEmitOnError
中设置tsconfig.json
标记。