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")

Relaterte artikler