Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 泛型排列元组类型在引用特定元素之前不会引发错误_Typescript_Typescript Typings_Typescript4.0 - Fatal编程技术网

Typescript 泛型排列元组类型在引用特定元素之前不会引发错误

Typescript 泛型排列元组类型在引用特定元素之前不会引发错误,typescript,typescript-typings,typescript4.0,Typescript,Typescript Typings,Typescript4.0,有一些类型定义我不想在这个问题中提出,所以这里有一个 在回答时,我遇到了一个奇怪的场景 我需要断言元组中每个元素的类型。现在,我使用的这个函数仅在引用特定属性时显示错误(因为我断言了返回值),但是linter没有对函数的参数提出任何抱怨 constwithargsarr=(…配置s:T)=>configs.map(withArgs)为{[i in keyof T]:GetWithArgs}; const shouldalsobeivalid=withArgsArr( { args:{good:{

有一些类型定义我不想在这个问题中提出,所以这里有一个

在回答时,我遇到了一个奇怪的场景

我需要断言元组中每个元素的类型。现在,我使用的这个函数仅在引用特定属性时显示错误(因为我断言了返回值),但是linter没有对函数的参数提出任何抱怨

constwithargsarr=(…配置s:T)=>configs.map(withArgs)为{[i in keyof T]:GetWithArgs};
const shouldalsobeivalid=withArgsArr(
{
args:{good:{value:[“bool”,true]},
fn:({好,坏})=>{}
}, {
参数:{num:{value:[“number”,5]},
fn:({num})=>{}
}
); // 还没有错误:(
const requiresBool=shouldAlsoBeInvalid[0]。fn({good:'string'});//TS2322:类型'string'不可分配给类型'boolean'。
const badDoesNotExist=shouldAlsoBeInvalid[0]。fn({bad:'string'});//TS2345:类型为“{bad:string;}”的参数不能分配给类型为“{good:boolean;}”的参数。
const requiresNumberParameter=shouldAlsoBeInvalid[1]。fn({num:'1'});//TS2322:类型“string”不可分配给类型“number”。
就个人而言,我知道如何正确地断言类型:

const invalid=withArgs({
args:{good:{value:[“bool”,true]},
fn:({good,bad})=>{}//类型“{good:boolean;}”上不存在属性“bad”
});
我想知道是否有一种方法可以通过argsarr通用地断言
的传入类型

constwithargsarr=(…配置s:T)=>configs.map(withArgs)为{[i in keyof T]:GetWithArgs};

ehhh,我认为这里的问题是编译器不能推断出您需要的那么多。您希望编译器推断每个元素的
fn
属性的参数类型,以及文本
[“bool”,true]
作为一个元组,这两个元组都会妨碍你。如果你非常强而明确地键入参数并修复一些键入,你可以在你想要的地方得到一个错误,比如,但我怀疑它是否值得(我认为,强键入是值得的,修复键入是值得的)。我很乐意写一些答案,但这确实不像是一个。比如,
{[K in keyof a]:a[Arg][“value”][1]}
对我来说似乎有点奇怪(你真的想
Arg
在那里吗?)。任何与错误没有直接关系的东西都应该从示例中删除(如果在删除某些内容时可以得到相同的错误,那么就删除它)。祝你好运!ehhh,我认为这里的问题是编译器无法推断出你所需要的那么多。你希望编译器推断每个元素的
fn
属性的参数类型,以及文本
[“bool”,true]
作为一个元组,这两个元组都会妨碍你。如果你非常强而明确地键入参数并修复一些键入,你可以在你想要的地方得到一个错误,比如,但我怀疑它是否值得(我认为,强键入是值得的,修复键入是值得的)。我很乐意写一些答案,但这确实不像是一个。比如,
{[K in keyof a]:a[Arg][“value”][1]}
对我来说似乎有点奇怪(你真的想
Arg
在那里吗?)。任何与错误没有直接关系的东西都应该从示例中删除(如果删除某些内容时会出现相同的错误,请删除它)。祝你好运!