Angular 找不到名称';许多';-升级到TypeScript 3.1.6
我最近将我的Angular项目从6升级到7,我面临lodash(v4.7.11)提供的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
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')
但是限制原始类型是一个更好的解决方案。谢谢,我将尝试一下