Javascript 使用TypeScript向函数添加属性
假设我有一个名为run的函数表达式:Javascript 使用TypeScript向函数添加属性,javascript,typescript,typescript2.2,Javascript,Typescript,Typescript2.2,假设我有一个名为run的函数表达式: let run = function(){ }; 我想在这个运行函数中添加一个名为“default”的属性,即对自身的引用 run.default = run; 这是为了支持JS中的多种模块导出格式 我听说最好的方法是使用名称空间 这是我的实际代码: namespace run { export interface Run { (paths: Array<string>, opts: run.IOpts, cb: Funct
let run = function(){
};
我想在这个运行函数中添加一个名为“default”的属性,即对自身的引用
run.default = run;
这是为了支持JS中的多种模块导出格式
我听说最好的方法是使用名称空间
这是我的实际代码:
namespace run {
export interface Run {
(paths: Array<string>, opts: run.IOpts, cb: Function): void
default: Run;
}
export interface IOpts {
babelExec?: string,
all?: boolean
}
}
const run : run.Run = function (paths: Array<string>, opts: run.IOpts, cb: Function): void {
//....
}
run.default = run;
export = run;
名称空间运行{
导出接口运行{
(路径:数组,选项:run.IOpts,cb:Function):void
默认值:Run;
}
导出接口IOpts{
babelExec?:字符串,
全部?:布尔值
}
}
const run:run.run=function(路径:数组,选项:run.IOpts,cb:function):void{
//....
}
run.default=run;
导出=运行;
但我得到这个警告:
有人知道为什么会出现这个错误消息吗
正如您所看到的,TS认为我没有默认属性的属性类型,但我非常确定我使用了名称空间声明…还是没有?被这个错误弄糊涂了-错误/警告似乎不正确。错误之所以会发生,是因为您分配给
default
的函数没有default
属性-它只是一个函数
您已将default
声明为Run
,因此分配给它的任何内容也必须具有default
属性
您可以将设置为默认值
可选:
default?: Run;
或者可以将其声明为函数:
default: (paths: Array<string>, opts: run.IOpts, cb: Function) => void;
default:(路径:数组,选项:run.IOpts,cb:Function)=>void;
如果您没有使用保留字(默认值)
,您可以这样做:
export function run() {
// ...
}
export namespace run {
export const DEFAULT = run;
}
但对于你似乎想做的事情,我认为最简单的是:
export function run() {
// ...
}
export default run;
嗯,谢谢,但是我代码中的默认属性应该指向具有默认属性的run函数,它指向具有默认属性的run函数。这只是一个循环引用,不确定我所拥有的有什么问题,但也许这个解决方案会奏效,谢谢!我认为您所说的是,默认属性在声明之后才附加到run函数……这一定是问题所在。这个解决方案似乎有效,谢谢。是的,你找到了。