TypeScript importera * utan att skapa alias
I TypeScript, hur importerar man "*" från en fil utan att skapa några alias?
Till exempel har jag en fil "utils" med top-nivå exporterade funktioner och vill importera alla utan att återskapa aliasen för varje funktion.
Något sådant här:
import * from "utils";
Är det möjligt?
Svar #1
Du kan inte generera ett automatiskt namn, du måste ge det ett namn som är lokalt för din fil. Detta är avsiktligt för att ge varje fil sin egen namngivningskontext.
// import the default export (something exported with "export default")
import Stuff from "./Stuff";
// import specific things only; aliases in this style are optional
import { ItemA as AliasA, ItemB as AliasB } from "./Stuff";
import { ItemA, ItemB } from "./Stuff";
// import everything at once, grouped under a common name
import * as Stuff from "./Stuff";
Jag ... vill importera dem alla utan att återskapa aliasen för varje funktion.
Det låter som att du skulle vilja ha det tredje alternativet ovanför.
men med den här syntaxen skapar ett alias
Jag tror idén är att om du bara kunde importera allt medan du tar namnen som de är definierade, då skulle du få namnkonflikter. På det sätt detta fungerar, tvingas du att välja ett namn för varje import, och det är upp till de namn du väljer att undvika konflikter snarare än att låta importerna krocka med varandra.
Jag tror att du kan göra något liknande, men bara med .d.ts-filer. jquery.d.ts gör det, men jag är inte 100% säker på hur det fungerar. Du kan helt enkelt säga:
// where the file is really Stuff.d.ts
import "./Stuff";
Svar #2
Jag tror att idén är att skapa ett "Utils"-modul, fästa alla funktioner och/eller klasser till det, sätta export framför dem och sedan exportera det istället, såsom
module Utils {
export function add(first:number, second:number):number {
return first+second
}
}
export = Utils
Även om jag ännu inte har lekt med ES6-modulsyntaxen i TypeScript, verkar det som att du antyder att använda.
