Подтвердить что ты не робот

Может ли typescript экспортировать функцию?

Можно ли экспортировать простую функцию из модуля typescript?

Это не компиляция для меня.

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

Этот workitem, кажется, подразумевает, что вы не можете, но не говорите об этом. Разве это невозможно?

4b9b3361

Ответ 1

Трудно сказать, что вы собираетесь делать в этом примере. 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

Ответ 2

Чтобы ответить на заголовок вашего вопроса напрямую, потому что он сначала задается в Google:

ДА, TypeScript может экспортировать функцию!

Вот прямая цитата из документации TS:

"Любое объявление (например, переменную, функцию, класс, псевдоним типа или интерфейс) можно экспортировать, добавив ключевое слово экспорта".

Ссылка Ссылка

Ответ 3

В моем случае я делаю это так:

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

Ответ 4

Если вы используете это для Angular, то экспортируйте функцию через именованный экспорт. Например:

function someFunc(){}

export { someFunc as someFuncName }

в противном случае Angular будет жаловаться, что объект не является функцией.