如何从TypeScript中的匿名对象轻松创建强类型对象?

Rya*_*pat 7 javascript anonymous-objects strong-typing typescript

我有一些JSON包含来自我的客户端的匿名对象.是否有一些内置机制或外部库用于将这些匿名对象转换为强类型的TypeScript对象?是否有像AutoMapper这样的东西?

我的对象是复杂类型,复杂类型作为属性.

Rya*_*ugh 8

获取一些示例数据并将其放在.ts文件中:

var people = [
    {
        "name": "bob", "height": 150, "pets": [{ "name": "spot", "species": "dog" }]
    },
    {
        "name": "jane", "height": 142, "pets": [{ "name": "lucy", "species": "cat" }]
    }
];
Run Code Online (Sandbox Code Playgroud)

tsc --declaration yourFile.ts

现在你将拥有yourFile.d.ts:

declare var people: {
    "name": string;
    "height": number;
    "pets": {
        "name": string;
        "species": string;
    }[];
}[];
Run Code Online (Sandbox Code Playgroud)

替换declare var people:interface Person,删除尾随[],并(可选)删除引号:

interface Person {
    name: string;
    height: number;
    pets: {
        name: string;
        species: string;
    }[];
}
Run Code Online (Sandbox Code Playgroud)

  • "如果转换不起作用,则在运行时出现错误" - TypeScript是一种仅编译时生成纯JavaScript的语言,因此无法提供运行时类型约束. (3认同)