Typescript接口作为函数返回类型

时间:2018-08-08 00:21:51

标签: typescript casting

这里是Typescript的新功能。我有一个关于使用接口作为函数返回类型的Typescript的问题。我有这个界面

interface IPerson { 
    name: string,
    age: number
}

如果我为其分配了一个对象,它将检查类型,如果类型不匹配,则拒绝。喜欢

const person: IPerson = { name: 'Tom', age: '26' };

但是,如果我将其用作函数的返回类型,则似乎不会检查该类型

const personJSON = '{ "name": "Jack", "age": "30"}';

const getPersonFromJSON = <IPerson>(json) : IPerson => {
    return JSON.parse(json);
}

console.log(getPersonFromJSON(personJSON));

看起来像返回值愿意接受String老化。

{ name: 'Jack', age: '30' }

想知道我做错了什么。非常感谢

1 个答案:

答案 0 :(得分:0)

const getPersonFromJSON = <IPerson>(json) : IPerson => {
    return JSON.parse(json);
}

这与

相同
const getPersonFromJSON = <T>(json) : T => {
    return JSON.parse(json);
}

并定义一个泛型函数。实际上,它是<any>(json: any): any

您应将其声明为

const getPersonFromJSON = (json) : IPerson => {
    return JSON.parse(json);
}

相反。

参考文献: