web-dev-qa-db-fra.com

TypeScript peut-il exporter une fonction?

Est-il possible d'exporter une fonction simple à partir d'un module TypeScript?

Ce n'est pas la compilation pour moi.

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

Cet élément de travail semble impliquer que vous ne pouvez pas mais ne le dites pas à plat N'est-ce pas possible? 

32
George Mauer

Il est difficile de dire ce que vous voulez dans cet exemple. exports = concerne l'exportation depuis les modules external, mais l'exemple de code que vous avez lié est un module internal.

Règle de base: Si vous écrivez module foo { ... }, vous écrivez un module interne; si vous écrivez export something something au plus haut niveau dans un fichier, vous écrivez un module externe. Il est plutôt rare que vous écriviez réellement export module foo au niveau supérieur (depuis, vous imbriqueriez le nom), et il est encore plus rare que vous écriviez module foo dans un fichier ayant une exportation de niveau supérieur foo ne serait pas visible de l’extérieur).

Les éléments suivants ont un sens (chaque scénario est défini par une règle horizontale):


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

fichier1.ts

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

export class bar { }

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

fichier1.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 };

fichier2.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
47
Ryan Cavanaugh

Pour répondre directement au titre de votre question, car cela apparaît d'abord dans Google:

YES, TypeScript peut exporter une fonction!

Voici une citation directe de la documentation TS: 

"Toute déclaration (telle qu'une variable, une fonction, une classe, un alias de type ou une interface) peut être exportée en ajoutant le mot clé export."

Lien de référence

1
Ray Hulha

Dans mon cas, je le fais comme ça:

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