我想扩展Function
,这可以很好地编译
interface Function {
hello(): any
}
Function.prototype.hello = function() {
console.log('hello world')
}
function noop() {}
noop.hello() //==> 'hello world' in the console
但是,一旦我尝试添加import语句,请说
import { sayHello } from './Anything'
其中Anything
仅包含
export function sayHello() { console.log('hello')}
Function.protoype.hello
的编辑失败,消息为error TS2339: Property 'hello' does not exist on type 'Function'
为什么?
注意:编译失败,tsc选项设置为--target es5 --module commonjs
或--target es6
答案 0 :(得分:0)
这可能是因为编译器并不知道你扩展了基本的函数类型。尝试:
export interface Function {...}
答案 1 :(得分:0)
这里很好的答案:https://github.com/Microsoft/TypeScript/issues/5944
简而言之,在介绍export
(或import
)时,整个文件被认为是在自己独立的命名空间中:Function
现在被评估为本地接口,不再引用全球定义。
我还建议在那里阅读整个讨论:https://github.com/Microsoft/TypeScript/issues/4166