Javascript 类型脚本类型转换对类的响应
我有一个p班的模特Javascript 类型脚本类型转换对类的响应,javascript,angular,typescript,Javascript,Angular,Typescript,我有一个p班的模特 class P { constructor(public ids: number[]) { console.log(ids); } } 调用服务api时,我得到如下响应: var response: any = { ids: "this is string" } 现在,当我们使用“response”创建模型p的实例时 let p1 = new P(response.ids); 这将产生错误:ID类型不匹配 但是没有错误 现在的问题是,如果
class P {
constructor(public ids: number[]) {
console.log(ids);
}
}
调用服务api时,我得到如下响应:
var response: any = { ids: "this is string" }
现在,当我们使用“response”创建模型p的实例时
let p1 = new P(response.ids);
这将产生错误:ID类型不匹配
但是没有错误
现在的问题是,如果响应与给定的模型类型不匹配,如何拒绝响应?Typescript被编译为javascript,所以运行时没有类型。如果要显示该消息,必须显式选中此项。类似于
TypeScript
的东西编译成JavaScript
。在运行时,因此当您调用服务API时,类型或类型提示是未知的。这些仅在编译步骤中相关
如果正在检查对象,则应使用typeof
或instanceof
手动检查api是否以正确的类型响应。如果ids
是一个数字数组,则可以执行以下操作:
isArrayOfNumbers(array: any): boolean {
return Array.isArray(array) && array.every(value => typeof value === 'number');
}
我正在从事angular4项目,我的服务回报如下。返回this.http.get(${this.endPoint.mock)。map(_card=>{return new card(_card.purchaseId,_card.productName);});那么,这可以吗,或者我应该进行显式类型检查。如果您希望是类型安全的,您可以根据它们的API规范生成响应模型(例如,有大量的虚张声势生成脚本/工具)这可以确保在编码时不会得到错误的类型