Typescript som utvider klasse i en annen fil
Jeg prøver å utvide en TypeScript-klasse i en annen fil slik:
a.ts:
module MyModule {
public Name: string;
export class MyClassA
{
}
}
b.ts:
module MyModule {
export class MyClassB extends MyClassA
{
}
}
Men jeg får feilen at MyClassA ikke kan finnes.
Begge filene er inne i tsconfig.json-filer-arrayen min. Hva gjør jeg galt?
Svar #1
Jeg vil gi et eksempel på hvordan man refererer til klasser fra andre .ts-filer.
I dette eksemplet har vi fire .ts-filer som som standard er moduler (eksterne moduler), bortsett fra den fjerde filen app.ts
Typescript-moduler
I TypeScript, akkurat som i ECMAScript 2015, anses en hvilken som helst fil som inneholder en toppnivå import eller eksport som et modul. Omvendt blir en fil uten noen toppnivå import- eller eksportdeklarasjoner behandlet som et skript hvis innhold er tilgjengelig i det globale området (og derfor også for moduler).
Eksempel :
Vi har en class Man og en class Woman som arver fra class Human. I app.ts oppretter vi en instans av Man.
Human.ts
export class Human {
public Name: string;
constructor(name: string) {
this.Name = name;
}
public WhatIsMyName() {
console.log(`I am ${this.Name}`);
return this.Name;
}
}
Man.ts
import { Human } from "./Human";
export class Man extends Human {
constructor(name: string) {
super(name);
}
}
Kvinne.ts
import { Human } from "./Human";
export class Woman extends Human {
constructor(name: string) {
super(name);
}
}
DinApp.ts
import { Man } from "./man";
const man = new Man("Billy The Kid");
man.WhatIsMyName();
Svar #2
Legg til referanse til a.ts i b.ts-filen slik:
/// <reference path="a.ts" />
module MyModule {
export class MyClassB extends MyClassA
{
}
}
eller bruk import slik:
import MyModule = require("MyModule")
