javascript - Typescript 2: Anpassad typdefinition i node_modules


Låt oss säga att jag publicerar ett eget bibliotek kallat my-library. Detta bibliotek kommer att ha strukturen

node_modules/
    my-library/
        lib/
            index.js
            src/
              ...
        typings/
            index.d.ts
        package.json

Säg nu att jag exporterar som standard något som kallas Application från index.js, så använder du det med import Application från 'my-library';

Nu vill jag i min index.d.ts deklarera dess typning:

export = Application;
export as namespace Application;

declare namespace Application {
   function foo(arg1: string): object;
}

Jag vet att jag förväntar mig att detta ska ge ett fel men det gör det inte:

import Application from 'my-library';

Application.foo(123)[0].blahblah;

Inte nog med att argumentet är fel, även användningen av returvärdet är fel. Jag vet inte hur jag ska lägga till mina typdefinitioner så att ovanstående fungerar.

Svar #1

Du kan titta här för att se var Typescript letar efter definitioner.

Det du förmodligen vill göra är att lägga till en types i din package.json för att peka på en anpassad definitionsfil.

{
    "types": "typings/index.d.ts",
}