我不确定这些名称是什么,因此在寻找答案时遇到了一些麻烦。假设我定义了以下接口:
interface Person {
name: string;
age: number;
}
以下内容有什么区别?
const foo: Person = getPerson(data);
和
const foo = getPerson(data) as Person;
似乎两者都告诉TS
foo
是Person
。根本上有什么区别吗?还是仅使用漂浮我的船的东西? 最佳答案
用
const foo: Person = getPerson(data);
您告诉编译器:我假设
getPerson
返回实现Person
接口的内容,请检查该内容并责骂我(如果没有)。const foo = getPerson(data) as Person;
是一个断言,可以使编译器确保
getPerson
返回Person
,即使它们另有含义。基本上,这是关闭类型检查器的一种方法,而且通常不是一个好主意。