Thursday, April 25, 2024
 Popular · Latest · Hot · Upcoming
145
rated 0 times [  152] [ 7]  / answers: 1 / hits: 174787  / 11 Years ago, wed, march 27, 2013, 12:00:00

Is it possible to export a simple function from a typescript module?



This isn't compiling for me.



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


This workitem seems to imply that you cannot but doesn't flat out say it. Is it not possible?


More From » typescript

 Answers
39

It's hard to tell what you're going for in that example. exports = is about exporting from external modules, but the code sample you linked is an internal module.



Rule of thumb: If you write module foo { ... }, you're writing an internal module; if you write export something something at top-level in a file, you're writing an external module. It's somewhat rare that you'd actually write export module foo at top-level (since then you'd be double-nesting the name), and it's even rarer that you'd write module foo in a file that had a top-level export (since foo would not be externally visible).



The following things make sense (each scenario delineated by a horizontal rule):






// 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

[#79325] Tuesday, March 26, 2013, 11 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
sylviakaitlinj

Total Points: 564
Total Questions: 114
Total Answers: 105

Location: Jordan
Member since Thu, Aug 11, 2022
2 Years ago
;