当前位置: 首页 > 知识库问答 >
问题:

TypeScript接口实现错误

易镜
2023-03-14

我很难协调以下文件中的内容:

interface T {
  _t(chunk: Array<string>): void;
  _t(chunk: string): void;
}

class TT implements T {
  _t(chunk: string): void {}
}

当我尝试编译它时,我得到以下错误消息:

Types of property '_t' of types 'TT' and 'T' are incompatible:
    Call signatures of types '(chunk: string) => void' and 
      '{ (chunk: string[]): void; (chunk: string): void; }' are incompatible:
        Type 'String' is missing property 'join' from type 'string[]'.

这很好,所以这意味着我应该能够通过明确指定财产权的对象类型来绕过这个问题?

interface T {
  _t(chunk: Array<string>): void;
  _t(chunk: string): void;
}

class TT implements T {
  _t: {
    (chunk: string): void;
    (chunk: Array<string>): void;
  } = function(chunk) {};
}

除了现在的问题之外,当我使用--noImplicitAny编译时,我会收到以下错误消息:

error TS7012: Parameter 'chunk' of lambda function implicitly has an 'any' type.

似乎不管我做什么,我都会输,因为如果我小心界面上的类型规格并拼出所有内容,那么我就不能将实现专门化为只有1种类型。问题是有。d.ts文件正是这样做的,如果我想让编译器找到所有的任何类型,因为我想尽可能显式,我必须取出从.d.ts文件能够实现接口和专门化子类中的实现。这似乎是一个错误。我该如何解决这个问题?

共有1个答案

端木桐
2023-03-14

只需键入它chunk:any

interface T {
  _t(chunk: Array<string>): void;
  _t(chunk: string): void;
}

class TT implements T {
  _t: {
    (chunk: string): void;
    (chunk: Array<string>): void;
  } = function(chunk:any) {};
}

// Safety: 
var t = new TT();
t._t(''); // okay
t._t([]); // okay
t._t(true); // Error

请注意,它不会降低您的类型安全性^

 类似资料:
  • 我在TypeScript中使用一个接口来定义一个函数,该函数仅在扩展基类的一些类上可用。这是我到目前为止的代码的简化版本: 现在,问题是我会添加更多的“行走”动物,这样移动动物的功能就会变得太大而无法控制。我想做的事情是这样的: 但是,“implements”检查不起作用,在使用接口时,我找不到与“instanceof”等效的。在Java中,“instanceof”的使用似乎可以在这里使用,但Ty

  • 主要内容:TypeScript,JavaScript,联合类型和接口,TypeScript,JavaScript,接口和数组,实例,实例,TypeScript,接口继承,TypeScript,JavaScript,TypeScript,JavaScript接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法。 TypeScript 接口定义如下: 实例 以下实例中,我们定义了一个接口 IPe

  • 本文向大家介绍TypeScript 类接口,包括了TypeScript 类接口的使用技巧和注意事项,需要的朋友参考一下 示例 public在接口中声明变量和方法,以定义其他打字稿代码如何与之交互。 在这里,我们创建一个实现接口的类。 该示例说明如何创建一个接口ISampleClassInterface和一类SampleClass是implements接口。

  • 本节介绍 TypeScript 各种类型接口的声明及其使用方法,接口在 TypeScript 中是极其重要的,我们使用接口来定义契约,如类型命名、属性检查、函数类型定义等。 在下一节学习完类之后,你会知道类也可以作为接口来使用。接口的种类繁多,在学习过程中一定要亲手编写,以达到灵活使用。 1. 慕课解释 TypeScript 的核心原则之一是对值所具有的结构进行类型检查。 它有时被称做“鸭式辨型法

  • 我是Visual Studio Xamarin的新手。在现有的xamarin android项目中,我必须添加一个Jar文件(SDK),所以我创建了一个绑定库,但是它引发了一些错误,我试图通过使用metadata.xml来解决这些错误,其中一个如下所示: 在api.xml中搜索,我发现了以下内容: 在接口中有这样的方法: 但是,当我搜索生成的类DeviceService.cs时,我发现了以下内容: