提问人:3x071c 提问时间:3/19/2021 最后编辑:fortunee3x071c 更新时间:3/19/2021 访问量:104
TypeScript 模块扩充 - 将完整实例引用为“this”而不是 subproperty
TypeScript Module Augmentation - Reference to Full Instance as 'this' instead of subproperty
问:
我想通过在属性下添加我自己的实用程序函数来扩展某个库中的类。(用 TypeScript 编写,使用模块扩充util
)
当我这样调用我的方法时: ,它们不会接收完整的 ,而只接收我们已经知道的属性。someClassInstance.util.doSomething()
someClassInstance
util
但是,这些函数在调用时需要每个实例的值。SomeClass
有没有办法接收上限范围()而不是作为?someClassInstance
someClassInstance.util
this
我知道将实例作为参数传递给函数会更容易实现,但这会使使用我的方法不那么好,因为您实际上会重复自己(包含实例两次)someClassInstance.util.doSomething(someClassInstance)
import * as exported from './[SAME_FILE]';
import { SomeClass } from 'SomeLibrary';
declare module 'SomeLibrary' {
interface SomeClass {
util: typeof exported;
}
}
SomeClass.prototype.util = exported;
// Does not work, expects an instance of SomeClass,
// but can only receive SomeClass.util
export async function doSomething(this: SomeClass) {
// do something with `this` (= someClassInstance)
}
示例实现
答: 暂无答案
评论
util
SomeClass
SomeClass
util