man*_*nok 2 casting tuples typescript
首先为我的英语道歉。
我有一个类似function func(): [string, string[]]返回元组的函数。但是,当我实现像这样的 return 语句时
var test = ['text', ['foo', 'bar']];
return test;
Run Code Online (Sandbox Code Playgroud)
Typescript 将我的返回类型推断为而(string | string[])[]不是[string, string[]].
我是否错过了某些内容,或者我是否需要每次都将返回对象显式转换为 Tuple ,例如return <[string, string[]]>['text', ['foo', 'bar']]. 如果是的话,那不是很烦人吗?
提供完整功能如下:
function func(): [string, string[]] {
var test= ['text', ['foo', 'bar']];
return test;
}
Run Code Online (Sandbox Code Playgroud)
错误:
Type '(string | string[])[]' is missing the following properties from type '[string, string[]]': 0, 1ts(2739)
TS 无法区分,如果你想['text', ['foo', 'bar']]成为数组或元组-表达式是相同的!test如果没有其他指定,它将默认为变量类型的数组。
如果您想要一个元组,请执行以下操作之一:
test一个显式的元组类型function func(): [string, string[]] {
const test = ['text', ['foo', 'bar']];
const test2 = ['text', ['foo', 'bar']] as const;
const test3: [string, string[]] = ['text', ['foo', 'bar']];
// return test; // error, was inferred as array
// return test2; // works
return test3; // works
}
Run Code Online (Sandbox Code Playgroud)
您不必as const重复您的类型,但您必须使用readonly修饰符注释函数返回类型:readonly [string, readonly [string, string]]。
| 归档时间: |
|
| 查看次数: |
582 次 |
| 最近记录: |