Typescript 接口(interface)作为函数返回类型

标签 typescript casting

这里是 Typescript 的新手。我有一个关于使用接口(interface)作为函数返回类型的 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' }

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

最佳答案

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);
}
反而。
引用:
  • https://www.typescriptlang.org/docs/handbook/2/generics.html
  • 关于Typescript 接口(interface)作为函数返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51737048/

    相关文章:

    在纯 html 中找不到用 typescript 编译的 javascript 代码

    java - c# upcasting 总是被允许的

    ios - 如何将 `Int8?` 转换为 `Int?` ?

    mysql - CAST(日期 AS DATE) 日期格式

    Java float 到 long 显式转换

    typescript - 我可以在 typescript 中声明广泛类型并使用推断类型吗?

    javascript - Angular 传递标签名称

    Typescript:编译时输出文件为空

    javascript - 单击按钮后,ngOnDestroy 不会触发

    java - Gson 库,将 JsonObject 转换为 MyObject