Typescript 为什么键入脚本';必须声明的环境接口实现?

Typescript 为什么键入脚本';必须声明的环境接口实现?,typescript,Typescript,我有一些接口及其实现的定义。有很多方法必须在每个实现类上声明 我觉得它单调乏味,因为它只是一个定义。是因为缺少时间来实现这一特性,还是在为什么应该强制实施环境实现定义的背后有了一些想法?还是我错过了什么 更新 我现在不喜欢我的问题,它是从一个人的角度写的,他确信接口成员是实现的,因为库所有者这么说的。但是,如果我决定创建自己的接口到其他人的库,我最好强制指定每个实现成员作为健全性检查。您不必为环境声明提供任何实现 例如,接口只描述没有实现的类型: interface MyInterface {

我有一些接口及其实现的定义。有很多方法必须在每个实现类上声明

我觉得它单调乏味,因为它只是一个定义。是因为缺少时间来实现这一特性,还是在为什么应该强制实施环境实现定义的背后有了一些想法?还是我错过了什么

更新


我现在不喜欢我的问题,它是从一个人的角度写的,他确信接口成员是实现的,因为库所有者这么说的。但是,如果我决定创建自己的接口到其他人的库,我最好强制指定每个实现成员作为健全性检查。

您不必为环境声明提供任何实现

例如,接口只描述没有实现的类型:

interface MyInterface {
    property: string;
    method(input: number): void;
}
这同样适用于类或模块的环境声明:

declare class MyClass {
    property: string;
    method(input: number): void;
}
如果要表示实现和接口的类的环境声明,可以使用以下快捷方式:

interface MyInterface {
    property: string;
    method(input: number): void;
}

declare var MyClass: MyInterface;

假设您不必写出接口成员:

class Base { }
class Derived extends Base { }

interface Foo {
    method(t: number): Base;    
}

declare class FooImpl1 implements Foo {
    // Empty
}

declare class FooImpl2 implements Foo {
    public method(): Derived;
}

FooImpl2
是否试图声明
method
的额外重载,或者
FooImpl2
是否使用接受较少参数并返回更多派生类型的签名来实现
method
?这两种解释都是正确的。您必须为所有此类情况制定规则,以便程序员能够指定它们的实际含义,从而降低语言的可预测性。

我所说的要求是在每个实现它的环境类中声明某个环境接口的每个成员。我想我理解您的意思-添加了其他示例。唯一不起作用的是,如果您希望用真正的TypeScript类扩展
MyClass
。我从未见过任何
declare类
declare
不是为
模块
保留的<代码>声明模块A{class AB{}}我不理解您的参数。就我所知,
Empty
案例是最常见的案例,也是最明确的案例。对于特殊情况,您的论点与扩展类没有任何不同,在扩展类中,您也不必写出基成员。就我在您的示例中所见,
FooImpl2
执行一个或另一个并不重要,这是一个声明,意味着作为用户,您可以调用这两个方法(显式声明的方法和隐式实现的方法)。