我不确定这些名称是什么,因此在寻找答案时遇到了一些麻烦。假设我定义了以下接口:

interface Person {
  name: string;
  age: number;
}


以下内容有什么区别?

const foo: Person = getPerson(data);




const foo = getPerson(data) as Person;


似乎两者都告诉TS fooPerson。根本上有什么区别吗?还是仅使用漂浮我的船的东西?

最佳答案



const foo: Person = getPerson(data);


您告诉编译器:我假设getPerson返回实现Person接口的内容,请检查该内容并责骂我(如果没有)。

const foo = getPerson(data) as Person;


是一个断言,可以使编译器确保getPerson返回Person,即使它们另有含义。基本上,这是关闭类型检查器的一种方法,而且通常不是一个好主意。

09-19 11:14