添加 属性 以使用 TypeScript 运行
Adding property to function with TypeScript
假设我有一个名为 运行:
的函数表达式
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;
但我收到此警告:
有谁知道为什么会出现该错误消息?
如您所见,TS 认为我没有默认 属性 的 属性 类型,但我很确定我使用了命名空间声明……或者没有?被这个错误弄糊涂了 - error/warning 似乎不正确。
发生错误是因为您分配给 default
的函数没有 default
属性 - 它只是一个函数。
您已将 default
声明为 Run
,因此分配给它的任何内容也必须具有 default
属性.
您可以将 default
设为可选:
default?: Run;
或者可以将其声明为函数:
default: (paths: Array<string>, opts: run.IOpts, cb: Function) => void;
如果您没有使用保留字 (default
),您可以这样做:
export function run() {
// ...
}
export namespace run {
export const DEFAULT = run;
}
但是对于你似乎想要做的事情,我认为最简单的是:
export function run() {
// ...
}
export default run;
假设我有一个名为 运行:
的函数表达式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;
但我收到此警告:
有谁知道为什么会出现该错误消息?
如您所见,TS 认为我没有默认 属性 的 属性 类型,但我很确定我使用了命名空间声明……或者没有?被这个错误弄糊涂了 - error/warning 似乎不正确。
发生错误是因为您分配给 default
的函数没有 default
属性 - 它只是一个函数。
您已将 default
声明为 Run
,因此分配给它的任何内容也必须具有 default
属性.
您可以将 default
设为可选:
default?: Run;
或者可以将其声明为函数:
default: (paths: Array<string>, opts: run.IOpts, cb: Function) => void;
如果您没有使用保留字 (default
),您可以这样做:
export function run() {
// ...
}
export namespace run {
export const DEFAULT = run;
}
但是对于你似乎想要做的事情,我认为最简单的是:
export function run() {
// ...
}
export default run;