函数可以在js中定义如下:function(a, b) {return a+b}
则允许调用如下:add(1, 2)
add('hello', 'world')
但是,不允许调用:add(1, 'world')
以下代码无法满足上述要求:function(a:string|number, b:string|number):string|number {return a+b}
如何在typescript中实现相同的代码?
函数可以在js中定义如下:function(a, b) {return a+b}
则允许调用如下:add(1, 2)
add('hello', 'world')
但是,不允许调用:add(1, 'world')
以下代码无法满足上述要求:function(a:string|number, b:string|number):string|number {return a+b}
如何在typescript中实现相同的代码?
1条答案
按热度按时间z0qdvdin1#
我发现这个问题很有趣,因为这可能是TypeScript的一个合法限制。
简单地返回
a + b
的显而易见的解决方案不起作用,TypeScript抱怨T + T
不能被操作,尽管我们知道a
和b
必须是字符串或数字,并且这两种类型在串联或加法操作中都是有效的。因此,我给你,没有任何铸造,这个问题的解决方案:
Playground
应该注意的是,这是一种黑客,
arguments
产生any[]
,只有在非箭头函数可用。