炫意html5
最早CSS3和HTML5移动技术网站之一

typescript 返回类型约束

function parse<T>(list: string | any[]) {
// do something
}

有上面这么一个函数,用于解析字符串,可以接收一个字符串或者数组,如果输入的是字符串, 给定T类型作为返回类型,如果不是字符串,则返回传入参数的类型(数组), 这样的约束应该怎么实现

回答

你的需求是通过输入参数的类型来决定返回值类型,这个需求是无法实现的,因为ts的类型检查都是静态类型,只作用于ts编译阶段。

通过给定泛型T来指定返回值类型是没有意义的,你的函数功能是进行字符串处理,那么返回的类型应该是固定的,或者跟随输入的参数类型(string或any[])

你可以换个思路,我们应该在调用的时候尽可能知道传入参数的类型,这样就可以使用T来标记参数与返回类型,如:

function parse<T>(list: T): T {
   // do something
}

如果说不能确定传入的是字符串还是数组,那就加入一些逻辑进行处理,将返回结果统一成string或者any[]

炫意HTML5 » typescript 返回类型约束

Java基础教程Android基础教程