打字稿可以输出一个函数吗?

时间:2013-03-27 03:39:13

标签: syntax typescript

是否可以从打字稿模块导出一个简单的函数?

This isn't compiling for me.

module SayHi {
    export function() {
    console.log("Hi");
  }
}
new SayHi();

This workitem似乎意味着你不能但不会说出来。这不可能吗?

4 个答案:

答案 0 :(得分:51)

在这个例子中很难说出你想要的是什么。 exports =是关于从外部模块导出,但您链接的代码示例是内部模块。

经验法则:如果你写module foo { ... },你就是在写一个内部模块;如果你在文件的顶层写export something something,你就是在写一个外部模块。实际上你在顶层编写export module foo有点罕见(从那以后你就会对名称进行双重嵌套),而且你在文件中编写module foo甚至更为罕见。有一个顶级导出(因为foo不会在外部可见)。

以下内容有意义(每个方案都由横向规则描述):


// An internal module named SayHi with an exported function 'foo'
module SayHi {
    export function foo() {
       console.log("Hi");
    }

    export class bar { }
}

// N.B. this line could be in another file that has a
// <reference> tag to the file that has 'module SayHi' in it
SayHi.foo();
var b = new SayHi.bar();

<强> file1.ts

// This *file* is an external module because it has a top-level 'export'
export function foo() {
    console.log('hi');
}

export class bar { }

<强> file2.ts

// This file is also an external module because it has an 'import' declaration
import f1 = module('file1');
f1.foo();
var b = new f1.bar();

<强> file1.ts

// This will only work in 0.9.0+. This file is an external
// module because it has a top-level 'export'
function f() { }
function g() { }
export = { alpha: f, beta: g };

<强> file2.ts

// This file is also an external module because it has an 'import' declaration
import f1 = require('file1');
f1.alpha(); // invokes f
f1.beta(); // invokes g

答案 1 :(得分:1)

要直接回答您的问题的标题,因为这首先出现在Google中:

是的,TypeScript可以导出函数!

以下是TS文档的直接引文:

“可以通过添加export关键字来导出任何声明(例如变量,函数,类,类型别名或接口)。”

Reference Link

答案 2 :(得分:0)

就我而言,我是这样的:

 module SayHi {
    export default () => { console.log("Hi"); }
 }
 new SayHi();

答案 3 :(得分:0)

如果将其用于Angular,则通过命名导出导出函数。如:

function someFunc(){}

export { someFunc as someFuncName }

否则,Angular会抱怨对象不是函数。