首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能在TypeScript中对函数类型使用“new”

不能在TypeScript中对函数类型使用“new”
EN

Stack Overflow用户
提问于 2017-07-08 17:04:18
回答 1查看 3.1K关注 0票数 3

我有这样的代码:

代码语言:javascript
复制
const BlockConstructors: Function[] = [
 OBlock,
 IBlock,
 TBlock
];

function randomFromArray(array: any[]) {
  return array[Math.floor( Math.random() * array.length )];
}

const BlockConstructor: Function = random(BlockConstructors);
const block: Block = new BlockConstructor();

我尝试从数组中绘制一个块构造函数,然后创建一个新对象,数组中的所有块构造函数都扩展了块类。我得到了错误:

不能对类型没有调用或构造签名的表达式使用“new”。

为什么会出现此错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-08 17:54:54

您的代码并不是独立的,但是下面是简化的原因。

Function不是new-able。在new中,只有三件事情可以在TypeScript中实现:

  1. 具有构造签名的类型
  2. 没有构造签名但具有返回void的调用签名的类型
  3. any

你真的想要第一个。

尝试从Function切换到(new () => Block)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44988702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档