69

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

这不是为我编译的。

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

这个工作项似乎暗示你不能但没有直截了当地说出来。不可能吗?

4

5 回答 5

95

在那个例子中很难说出你要做什么。是关于从外部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();

文件1.ts

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

export class bar { }

文件2.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();

文件1.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 };

文件2.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
于 2013-03-27T04:57:14.327 回答
14

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

是的,TypeScript 可以导出函数!

这是 TS 文档的直接引用:

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

参考链接

于 2018-12-09T10:30:52.690 回答
11

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

function someFunc(){}

export { someFunc as someFuncName }

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

编辑:我现在使用 angular 11,这不再需要了。所以就足够了export function(){ ...}

于 2019-09-01T09:35:46.467 回答
2

就我而言,我这样做是这样的:

 module SayHi {
    export default () => { console.log("Hi"); }
 }
 new SayHi();
于 2018-12-09T10:37:36.850 回答
0

您还可以使用from关键字 withimport并直接破坏导出的对象。

文件1.ts

export const CARS_QUERY = `
    {
      getAllCars {
        model,
        make,
        picture
      }
    }
    `;

文件2.ts

import { CARS_QUERY } from "file1.ts";

于 2022-02-25T20:20:03.200 回答