ts 泛型 后面的那个冒号是干嘛的?

function identity<T>(arg: T): T {
    return arg;
}

前面的还能看懂,请问这个 : T 是干嘛的啊

阅读 4.5k
3 个回答

就是普通的类型标记啊……

// 这能看懂吧?
// 标记 arg 是个 number 类型
// 标记 foo 返回值是个 string 类型
function foo(arg: number): string;

// 加上泛型,跟上面没区别
function foo<T>(arg: number): string;

// 改变一下 arg 的类型和 foo 的返回值类型
// 这里意思即为 foo 的返回值和 arg 的返回值类型永远相同
// 你传 foo(number) 进来,返回值就也是 number
// 你传 foo(string) 进来,返回值就也是 string
function foo<T>(arg: T): T;

冒号后面的T代表该函数返回的类型

函数的<>中的T是泛型声明:即有一个类型叫T,在后面可以用T指代这个还不知道的类型。

这里在返回值的位置使用TT就代表该函数要返回对应泛型的类型。

例如 identity<string>('a') 返回string类型的值。

identity<T>是一个泛型函数,泛型记作T
(arg: T): T 参数arg的类型是T,返回值的类型是T

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题