Angular 找不到名称';许多';-升级到TypeScript 3.1.6

Angular 找不到名称';许多';-升级到TypeScript 3.1.6,angular,typescript,lodash,typescript3.0,Angular,Typescript,Lodash,Typescript3.0,我最近将我的Angular项目从6升级到7,我面临lodash(v4.7.11)提供的orderBy功能的问题 将字符串传递给orderBy的第三个参数时出错 类型为“string”的参数不能分配给类型为Many的参数 我的排序变量名为sort,我尝试将一个类型声明为sort:Many,然后我得到 找不到名称“Many” 我如何解决这个问题 我的typescript版本是3.1.6。许多类型需要一个名称所示的。使用[“desc”] 编辑:在进一步检查类型定义时,Many同时允许数组和单个值Man

我最近将我的Angular项目从6升级到7,我面临lodash(v4.7.11)提供的
orderBy
功能的问题

将字符串传递给
orderBy
的第三个参数时出错

类型为“string”的参数不能分配给类型为
Many
的参数

我的排序变量名为
sort
,我尝试将一个类型声明为
sort:Many
,然后我得到

找不到名称“Many”

我如何解决这个问题


我的typescript版本是3.1.6。

许多类型需要一个名称所示的。使用
[“desc”]

编辑:在进一步检查类型定义时,
Many
同时允许数组和单个值
Many=T | ReadOnlyArray
工作示例:

orderBy([ { name: 'john' }, { name: 'kate' }], [ 'name' ],  'asc')
orderBy([ { name: 'john' }, { name: 'kate' }], [ 'name' ],  [ 'asc' ])

正如名称所示,
Many
类型需要一个。使用
[“desc”]

编辑:在进一步检查类型定义时,
Many
同时允许数组和单个值
Many=T | ReadOnlyArray
工作示例:

orderBy([ { name: 'john' }, { name: 'kate' }], [ 'name' ],  'asc')
orderBy([ { name: 'john' }, { name: 'kate' }], [ 'name' ],  [ 'asc' ])

这里的一些答案是事实,但对我来说并没有解决问题。我的处境有点棘手

这正是我正在使用的代码行

this.actions=_orderBy(this.actions,columnName,(this.sort.dir | | this.defaultSort.dir))

其中typescript在编译时抛出错误,如上所述

现在,我应该在问题中提到这一点,我不是直接传递
asc
desc
,而是传递一个计算结果为其中一个的表达式

我只需要做以下几点就可以了

[(this.sort.dir | | this.defaultSort.dir)=='asc'?'asc':'desc']

或Avin建议的更好版本

(this.sort.dir | | this.defaultSort.dir)作为('asc'|'desc')

因此,让解释器明白,这两个值中的任何一个都是唯一可能的输出


因此,对于任何人,主要是每个人,谁将要传递一个字符串变量,将有两个值中的任何一个可以遵循这个小技巧,使事情的工作。

这里的一些答案是事实,但它没有解决它为我。我的处境有点棘手

这正是我正在使用的代码行

this.actions=_orderBy(this.actions,columnName,(this.sort.dir | | this.defaultSort.dir))

其中typescript在编译时抛出错误,如上所述

现在,我应该在问题中提到这一点,我不是直接传递
asc
desc
,而是传递一个计算结果为其中一个的表达式

我只需要做以下几点就可以了

[(this.sort.dir | | this.defaultSort.dir)=='asc'?'asc':'desc']

或Avin建议的更好版本

(this.sort.dir | | this.defaultSort.dir)作为('asc'|'desc')

因此,让解释器明白,这两个值中的任何一个都是唯一可能的输出


因此,对于任何人,主要是每个人,谁将要传递一个字符串变量,将有两个值中的任何一个,都可以遵循这个小技巧使事情顺利进行。

我得到的
类型为“string[]”的参数不能分配给类型为“Many”的参数。
这是不可能的。我添加了测试示例。您正在传递可变数组吗?它必须是常量。它不是可变数组,但数组中的元素(字符串)是可变的,并且仅在运行时显示值。与xD相同,您应该将字符串的类型限制为
'asc'|'desc'
我正在获取类型为'string[]的
参数'不可分配给'Many'类型的参数。
这是不可能的。我添加了测试示例。您正在传递可变数组吗?它必须是常量。它不是可变数组,但数组中的元素(字符串)是可变的,并且仅在运行时显示值。与xD相同,您应该将字符串的类型限制为
'asc'|'desc'
是否可以将
this.sort.dir
this.defaultSort.dir
的类型限制为
'asc'|'desc'
如果条件是
(this.sort.dir | | this.defaultSort.dir)作为('asc''desc
但是限制原始类型是一个更好的解决方案。谢谢,我会尝试一下。你不能将
this.sort.dir
this.defaultSort.dir
的类型限制为
'asc'|'desc'
如果条件是这样的话,你可以使用类型断言而不是运行时
(this.sort.dir | this.defaultSort.dir)('asc'|'desc')
但是限制原始类型是一个更好的解决方案。谢谢,我将尝试一下