69

typescriptモジュールから単純な関数をエクスポートすることは可能ですか?

これは私のためにコンパイルしていません。

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();

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
于 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でキーワードを使用してimport、エクスポートされたオブジェクトを直接破棄することもできます。

file1.ts

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

file2.ts

import { CARS_QUERY } from "file1.ts";

于 2022-02-25T20:20:03.200 に答える