【发布时间】:2018-08-01 23:24:23
【问题描述】:
试图创建一个泛型但它显示错误:类型“用户[]”不可分配给类型 T[] 无法理解这样做有什么问题-
interface User {
name: string,
age: number
}
interface Movie {
title: string,
language: string
}
function getItems<T>(arg: number|string): T[] {
let useList: User[] = [];
let movieList: Movie[] = [];
if (typeof arg == 'string') {
return useList;
} else {
return movieList;
}
}
var a: User[] = getItems<User>('user_list');
【问题讨论】:
-
返回两个不同接口类型的数组只是为了演示。我只想制作一个通用函数,说我可以传递一些参数,并且它应该能够按预期返回“任何”类型的数据。如果我必须使用函数重载,那么我很困惑打字稿中泛型的优势是什么。正如定义天通过添加
或其他东西使方法通用。 -
另外,当我悬停函数调用时,它会正确显示返回类型(正如提及
所预期的那样)
标签: typescript