typescript - 如何正确地将函数转换为可更新的
问题描述
当我尝试制作这样的功能new
时:
01: interface Foo{}
02:
03: var Foo: new() => Foo = function(this: Foo): void {};
它会产生如下错误:
类型“
(this: Foo) => void
”不可分配给类型“new () => Foo
”。
类型“(this: Foo) => void
”未提供与签名“new (): Foo
”的匹配项。
如果我将第 3 行更改为:
03: var Foo: new() => Foo = function(this: Foo): void {} as new() => Foo;
错误将变为:
类型 '
(this: Foo) => void
' 到类型 'new () => Foo
' 的转换可能是一个错误,因为这两种类型都没有与另一种充分重叠。
如果这是故意的,unknown
请先将表达式转换为 ' '。
但是,如果我将其转换为Function
第一个,即
03: var Foo: new() => Foo = function(this: Foo): void {} as Function as new() => Foo;
不会发出任何错误。它也适用于铸造Function
/ Date
/ Error
/ String
/等。Constructor
预先。
所以我的问题是为什么要投射到Function
或Constructor
s 使人们能够进一步投射到new() => Foo
?
另外,如果我想在中间转换中精确,中间类型的定义应该是什么?
解决方案
推荐阅读
- python - 如何以特定的时间间隔连续触发动作?敌人在pygame中发射恒定光束而不是子弹
- excel - 在多列中查找相似值,求和并获取范围
- csv - HERE XYZ 无法通过命令行上传数据文件
- mysql - 如何索引和查询具有 60M 行和 50 列的非常大的数据库
- go - 完全删除使用“go get”安装的软件包?
- javascript - Lozad延迟加载插件,加载前图片显示链接断开
- java - java.lang.ClassCastException:java.math.BigDecimal 不能转换为 java.lang.Long
- botframework - 在虚拟助手模板中使用 Content Moderator 会引发错误
- java - 在 Java 8 中以静态方式获取类名
- javascript - 注释掉正则表达式,javascript