javascript - Kan typescript eksportere en funksjon?
Er det mulig å eksportere en enkel funksjon fra en TypeScript-modul?
Dette kompilierer ikke for meg.
module SayHi {
export function() {
console.log("Hi");
}
}
new SayHi();
Denne arbeidsoppgaven synes å antyde at du ikke kan, men sier det ikke rett ut. Er det ikke mulig?
Svar #1
Det er vanskelig å si hva du prøver å oppnå i det eksemplet. exports = handler om å eksportere fra eksterne moduler, men kodeeksemplet du lenket til er en intern modul.
Tommelregel: Hvis du skriver module foo { ... }, skriver du en intern modul; hvis du skriver export something something på toppnivå i en fil, skriver du en ekstern modul. Det er ganske sjeldent at du faktisk skriver export module foo på toppnivå (siden da ville du ha dobbeltnestet navnet), og det er enda sjeldnere at du skriver module foo i en fil som hadde en toppnivå-eksport (siden foo ikke ville være synlig eksternt).
Følgende ting gir mening (hvert scenario avgrenset av en horisontal strek):
// 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
Svar #2
For å svare direkte på tittelen på spørsmålet ditt, fordi dette kommer opp først i Google:
JA, TypeScript kan eksportere en funksjon!
Her er et direkte sitat fra TS-dokumentasjonen:
"Enhver deklarasjon (som en variabel, funksjon, klasse, typealias eller grensesnitt) kan eksporteres ved å legge til nøkkelordet export."
Referanselenke
Svar #3
Hvis du bruker dette for Angular, eksporter da en funksjon via en navngitt eksport. For eksempel:
function someFunc(){}
export { someFunc as someFuncName }
ellers vil Angular klage over at objektet ikke er en funksjon.
Rediger: Jeg bruker Angular 11 nå, og dette er ikke nødvendig lenger. Så det er nok å export function someFunc(){ ...}
