Kann Typescript eine Funktion exportieren?

Lesezeit: 3 Minuten

Benutzer-Avatar
Georg Mauer

Ist es möglich, eine einfache Funktion aus einem Typescript-Modul zu exportieren?

Kompilieren ist das nicht für mich.

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

Dieses Arbeitselement scheint zu implizieren, dass Sie es nicht sagen können, aber nicht sagen. Ist es nicht möglich?

Benutzer-Avatar
Ryan Cavanaugh

Es ist schwer zu sagen, worauf Sie in diesem Beispiel hinaus wollen. exports = geht es um den Export aus extern Module, aber das von Ihnen verlinkte Codebeispiel ist eine intern Modul.

Faustregel: Wenn Sie schreiben module foo { ... }, schreiben Sie ein internes Modul; wenn du schreibst export something something Auf oberster Ebene in einer Datei schreiben Sie ein externes Modul. Es ist etwas selten, dass Sie tatsächlich schreiben export module foo auf oberster Ebene (seitdem würden Sie den Namen doppelt verschachteln), und es kommt noch seltener vor, dass Sie schreiben module foo in einer Datei, die einen Top-Level-Export hatte (seit foo von außen nicht sichtbar wäre).

Folgende Dinge sind sinnvoll (jedes Szenario durch eine horizontale Regel abgegrenzt):


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

  • Danke, die exports function blah() Syntax ist das, wonach ich gesucht habe

    – Georg Mauer

    27. März 2013 um 13:29 Uhr

  • Vier Jahre später glaube ich, dass es viel sinnvoller wäre, wenn “Export” stattdessen “öffentlich” heißen würde …

    – Loupax

    19. April 2017 um 5:21 Uhr

Um den Titel Ihrer Frage direkt zu beantworten, da dieser zuerst in Google auftaucht:

JA, TypeScript kann eine Funktion exportieren!

Hier ist ein direktes Zitat aus der TS-Dokumentation:

“Jede Deklaration (z. B. eine Variable, Funktion, Klasse, ein Typalias oder eine Schnittstelle) kann durch Hinzufügen des Schlüsselworts export exportiert werden.”

Referenzlink

Benutzer-Avatar
Eli

Wenn Sie dies für Angular verwenden, exportieren Sie eine Funktion über einen benannten Export. Wie zum Beispiel:

function someFunc(){}

export { someFunc as someFuncName }

Andernfalls beschwert sich Angular, dass das Objekt keine Funktion ist.

Bearbeiten: Ich verwende jetzt Winkel 11 und das wird nicht mehr benötigt. Es reicht also export function(){ ...}

In meinem Fall mache ich es so:

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

Sie können auch die verwenden from Stichwort mit import und das exportierte Objekt direkt zerstören.

file1.ts

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

file2.ts

import { CARS_QUERY } from "file1.ts";

1055770cookie-checkKann Typescript eine Funktion exportieren?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy