Typescript的泛型

原创
2020/12/02 16:09
阅读数 114

快速来写一个泛型吧。

先假设一个场景,服务端返回的数据,通常为类似 {code: number, data: any} 这样的结构,可以这样定义:

interface My<T> {
    code: number;
    data: T;
}

则:

const a: My<{key: string}> = { code: 100, data: {key: 'value'} };

结合 fetch 使用:

fetch('url')
  .then(res => r.json())
  .then((res: My<{key: string}>) => {
    console.log(r.data.key);
  });

定义一个泛型函数:

interface Fn<T> {
    (arg: T): T;
}

type Fn<T> = (arg: T) => T;

使用:

// 注意 extends {} 是必要的,以提示编译器这是泛型
let myFun: Fn<string> = <T extends {}>(arg: T): T => {
    return arg;
};

或者:

let myFun: Fn<string> = function identity<T>(arg: T): T {
    return arg;
}

等价于:

let myFun: <U extends {}>(arg: U) => U = function identity<T>(arg: T): T {
    return arg;
}
展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部