使用类型声明方法

问题描述

我知道如何使用类型来声明类函数

type myType = (val: number) => void;

class myClass {
    myFunction1 = function (val) {  }
    myFunction1Typed : myType  = function (val) {  }
}

但是,我不知道如何使用方法符号来做同样的事情

type myType = (val: number) => void;

class myClass {
    myMethod (val) {  }
    myMethodTyped : myType (val) {  }   // not valid  !!!!!!
}

我在文档中找不到任何关于此的内容

我的问题是我有大量声明为方法的类代码库(我发布的第二个示例)。

现在,我们开始逐步介绍一些函数的类型。

我们当然可以随时更改函数的声明,但如果我们能坚持我们当前的风格并以某种方式添加类型会更容易。

解决方法

我很确定您的第二次语法尝试在 TypeScript 中根本无效/不支持。这也可能是您在文档中找不到任何相关内容的原因。

请注意,TypeScript 基本上只是对强类型提供额外支持的 JavaScript。除了少数例外(在这种情况下,TypeScript 编译器会处理将某些花哨的 TypeScript 表达式编译/转换为合法的目标 JavaScript 表达式),如果你去掉所有 TypeScript 特定的东西,你在 TypeScript 中编写的所有内容基本上应该仍然是合法的 JavaScript。

TypeScript 可以推断和推断很多,但不是全部。您的显式 myType 类型只能用于确保在 myMethodTyped 类中相应地实现 myClass 方法时不会犯任何与数据类型相关的错误。

另请注意,除了类型之外,TypeScript 还提供了接口的概念,以确保您的函数、方法、类等经过强类型检查。但我不确定在您的情况下使用接口是否是更好的选择。类型和接口都有自己的优点和缺点,因此您可以决定使用哪个功能。

,

我很确定没有办法做到这一点。你能得到的最接近的是使用接口:

interface IMyClass {
  myMethod(val: any): number;
}

class MyClass implements IMyClass {
  myMethod(val: any) {
    return 5;
  }
}

所以我的意思是这两个界面略有不同:

interface IMyClass {
  myMethod(val: any): number;
}

interface IMyClass2 {
  myMethod: (val: any) => number;
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...