Cum să exporți/importi doar o definiție de tip în TypeScript
Cum pot să export și să import o definiție de tip independent de modulul în sine.
În Flowtype, acest lucru ar arăta astfel: Fișierul sub.js exportă tipul myType folosind export type myType={id: number}; și fișierul main.js importă tipul folosind import type {myType} from './sub.js';
Răspuns #1
Typescript 3.8 și versiunile ulterioare au exporturi și importuri doar de tip:
https://devblogs.microsoft.com/typescript/announcing-typescript-3-8/#type-only-imports-exports
import type { SomeThing } from "./some-module.js";
export type { SomeThing };
Răspunsul #2
Pur și simplu îl imporți normal și compilatorul determină că nu este necesar să fie emisă instrucțiunea import deoarece nu se folosește cod concret.
Iată un exemplu:
component.ts
export interface MyInterface {
name: string;
}
app.ts
import { MyInterface } from './component';
class MyClass implements MyInterface {
constructor(public name: string) { }
}
Fișierul app.js este pur și simplu (versiunea ES2015):
class MyClass {
constructor(name) {
this.name = name;
}
}
Sau în termeni mai vechi ES5:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var MyClass = /** @class */ (function () {
function MyClass(name) {
this.name = name;
}
return MyClass;
}());
Ceea ce este important aici este că compilatorul TypeScript a înțeles că importul este necesar doar în timpul compilării, nu la rulare.
