typescript 为什么typesript在promis时不响应类型?

ddarikpa  于 2023-02-13  发布在  TypeScript
关注(0)|答案(1)|浏览(101)

虽然应该有错误,但我得到了正确的结果。为什么typesript在promis时不响应type?
https://codesandbox.io/s/lucid-elgamal-4lbin2

const BEApi = new Promise((resolve) => {
  resolve({
    string: 123
  });
});
type MyDataType = {
  string: string;
};

let myData: MyDataType | null = null;

const myResponce = async () => {
  myData = (await BEApi) as MyDataType;
  console.log(myData);
};

myResponce();
afdcj2ne

afdcj2ne1#

类型Assert告诉TypeScript值指定的类型。
它显式重写所有类型检查。
您说(await BEApi) as MyDataType和TypeScript信任您。
我建议避免使用as,更好的描述类型的方法是指定new Promise应该解析为MyDataType
这将导致TypeScript在您尝试使用不符合该类型的值解析它时报告错误。

type MyDataType = {
  string: string;
};

const BEApi = new Promise<MyDataType>((resolve) => {
  resolve({
    string: 123
  });
});

let myData: MyDataType | null = null;

const myResponce = async () => {
  myData = await BEApi;
  console.log(myData);
};

myResponce();

相关问题