Typescript 类型脚本转换json数组

Typescript 类型脚本转换json数组,typescript,Typescript,我有如下JSON数组: var json = [{ id: 1, login: "Mieszko", name: "Misztal", surname: "Adminek", phone: "0413414", role: 2 }, { id: 2,

我有如下JSON数组:

   var json = [{
            id: 1,
            login: "Mieszko",
            name: "Misztal",
            surname: "Adminek",
            phone: "0413414",
            role: 2
            },
            {
                id: 2,
                login: "Rafal",
                name: "Robak",
                surname: "Kierowczek",
                phone: "5145145",
                role: 1
            }
        ];
export class User extends BaseModel {
    id: number;
    login: string;
    name: string;
    surname: string;
    phone: string;
    roles: Roles;
    admin: boolean;
    driver: boolean;

isDriver(): boolean {
        return this.roles === 1;
    }
//other methods

}
我还创建了用户类,如下所示:

   var json = [{
            id: 1,
            login: "Mieszko",
            name: "Misztal",
            surname: "Adminek",
            phone: "0413414",
            role: 2
            },
            {
                id: 2,
                login: "Rafal",
                name: "Robak",
                surname: "Kierowczek",
                phone: "5145145",
                role: 1
            }
        ];
export class User extends BaseModel {
    id: number;
    login: string;
    name: string;
    surname: string;
    phone: string;
    roles: Roles;
    admin: boolean;
    driver: boolean;

isDriver(): boolean {
        return this.roles === 1;
    }
//other methods

}
我的计划是将输入JSON数组转换为用户数组。在JSON中,我将角色设置为整数。我的类中有admin和driver布尔字段。这在ngModel中是复选框所必需的

现在问题出在这条线之后

var users: Array<User> = JSON.parse(JSON.stringify(json));
var用户:Array=JSON.parse(JSON.stringify(JSON)); 我无法从用户类调用方法,例如
users[0].isDriver()
,因为编译器无法识别isDriver()方法


有人知道如何解决这个问题吗?

TypeScript类型断言

TypeScript允许您以任何方式覆盖其推断和分析的类型视图。这是通过一种称为“类型断言”的机制完成的

类型断言有两种形式。一种是“尖括号”语法:

回答这个问题

在您的例子中,问题不是类型断言。您正在尝试将一组普通JSON对象分配给users变量,然后尝试调用对象上不存在的方法(users[0]。ISDRIVE未定义)

您不能简单地将普通对象强制转换为JavaScript/TypeScript类实例。您必须首先实例化一个用户。有许多技术可以实现这一点,通常涉及到复制数据

有关将JSON“强制转换”到TS类实例的示例解决方案,请参见以下答案之一:


  • 这个数组怎么会是JSON数组???它要么是数组,要么是JSON格式的数据。对我来说,这看起来非常像一个数组,不管你称它为什么变量。。。