Javascript 类型脚本类型转换对类的响应

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类型不匹配 但是没有错误 现在的问题是,如果

我有一个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类型不匹配

但是没有错误


现在的问题是,如果响应与给定的模型类型不匹配,如何拒绝响应?

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规范生成响应模型(例如,有大量的虚张声势生成脚本/工具)这可以确保在编码时不会得到错误的类型