Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.7k views
in Technique[技术] by (71.8m points)

typescript 返回类型约束

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

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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

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

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

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

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...