Δημοσίευση Typescript στο NPM χωρίς JS


Πώς να δημοσιεύσω το αρχείο μου *.ts στο NPM που περιέχει μόνο ορισμούς τύπων και διεπαφών;

Δεν υπάρχει εξαγόμενη συνάρτηση JavaScript, αντικείμενο κ.λπ.
Πρέπει να το διαγράψω; "main": "index.js", -ή- να αντικαταστήσω με "main": "dist/types.ts",

Πρέπει να μεταγλωττίσω τα *.ts σε *.d.ts;

Το types.js:

export type Optional<T>                    = T|null|undefined
export type OptionalOrFalse<T>             = Optional<T|false>
export type SingleOrArray<T>               = T|T[]

export type DeepArray<T>                   = (T|DeepArray<T>)[] // ===       T[]  |  T[][]  |  T[][][]  |  ...
export type SingleOrDeepArray<T>           = T|DeepArray<T>     // === T  |  T[]  |  T[][]  |  T[][][]  |  ...

export type Factory<T>                     = () => T
export type ProductOrFactory<T>            = T|Factory<T>
export type ProductOrFactoryDeepArray<T>   = (ProductOrFactory<T> | ProductOrFactoryDeepArray<T>)[] // ===         T[]|F[]  |  T[][]|F[][]  |  T[][][]|F[][][]  |  ...
export type ProductOrFactoryOrDeepArray<T> =  ProductOrFactory<T> | ProductOrFactoryDeepArray<T>    // === T|F  |  T[]|F[]  |  T[][]|F[][]  |  T[][][]|F[][][]  |  ...

export type Dictionary<TValue>             = { [key: string]: TValue }
export type ValueOf<TDictionary>           = TDictionary[keyof TDictionary]
export type DictionaryOf<TDictionary>      = Dictionary<ValueOf<TDictionary>>

Απάντηση #1

Θα ρίξω μια ματιά σε παραδείγματα από το DefinitelyTyped (π.χ. πακέτα @types/...).

Με βάση αυτό, πιστεύω:

  • "main" μπορεί να είναι μια κενή συμβολοσειρά ("")
  • "types" θα πρέπει να δείχνει στο "index.d.ts" σας
  • Το πακέτο σας δεν θα πρέπει να περιλαμβάνει αρχεία *.ts (αντίθετα, θα πρέπει να περιέχει αρχεία *.d.ts)

Αυτό μπορεί επίσης να είναι χρήσιμο να το διαβάσετε: https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html