class ts 扩展方法_TypeScript中的简单扩展方法

此示例使用继承来扩展原始对象.命名仅用于说明.

class Test {

baseMethod() {

}

}

class TestWithClose extends Test {

close() {

}

}

var t = new TestWithClose();

t.close();

t.baseMethod();

更新

您已在评论中提到可以按照自己的方式编写内置函数的扩展方法,我可以看到您希望对自己的代码执行相同的操作,但这是不可能的.

我希望这能解释原因.

在TypeScript中创建声明时,可以通过添加声明来扩展声明.您可以使用declare关键字或将文件放在.d.ts文件中:

例如,如果您在一个文件中包含此声明:

declare interface ExampleInterface {

methodOne();

}

您可以在另一个文件中扩展声明:

declare interface ExampleInterface {

methodTwo();

}

因此,当您使用它时,您可以使用这两种功能:

function example(example: ExampleInterface) {

example.methodOne();

example.methodTwo();

}

这些并不是真正的扩展方法 – 这只是告诉编译器不止一次实现.这对jQuery特别有用,因为它允许每个插件都有一个添加到JQuery接口的定义.

您无法为自己的TypeScript代码执行此操作,因为添加到接口将导致所有实现都需要更新以匹配接口定义.

这里的思维转变是TypeScript给你静态输入,你正在寻找动态行为 – 所以你必须选择一个或另一个.例如,您可以在您真正需要的地方使用动态行为,并将其余部分静态输入:

class Test {

}

// statically typed

var stTest = new Test();

// dynamically typed

var testExtender: any = Test;

testExtender.prototype.close = function() {

alert('Close');

};

var t: any = new Test();

t.close();

这并不是说将来不会添加某些语言来支持扩展方法.

你可能感兴趣的:(class,ts,扩展方法)