如果它采用函数,变量类型是什么?

What is the variable type if it takes a function?

我正在编写一个构造函数,它接受一个字符串、一个整数和一个函数(可能还有更多我目前还不知道的东西)。到目前为止,我得到了以下内容。

export class Blobb {
  constructor(public value: number, 
              public name: string, 
              public mapping: function,
              public misc: any) { ... }
}

显然,变量 mapping 使转译崩溃,因为 function 不是有效类型。我不知道该怎么办。

传递给构造函数的函数是否有特定类型? any 是首选方法吗?我应该考虑声明自己的类型吗?

如果它有任何意义,要传递的函数将始终是这样的(当然,计算会有所不同)。

mapping() {
  this.value * 13 + ": " + this.name;
}

我自己没有使用过它们,但是从文档中,我看到类型别名是一个东西(在 TS 1.4 中引入);

例如:

type NameResolver = () => string;
function getName(n: NameOrResolver): Name {...}

Typescript Advanced Types

你可以在 es2015 或更高版本中使用接口 'Function',所以它看起来像,

export class Blobb {
  constructor(public value: number, 
              public name: string, 
              public mapping: Function,
              public misc: any) { ... }
}

我认为您需要 Function 大写 'F' 而不是 function

function 我相信是声明新函数的关键字。

您可以使用确切的函数签名来注释参数,而不是将其指定为 Function。在您的情况下,它可以输入为 () => void:

export class Blobb {
  constructor(public value: number, 
              public name: string, 
              public mapping: () => void,
              public misc: any) { ... }
}

TypeScript 函数类型:https://www.typescriptlang.org/docs/handbook/functions.html#function-types