انتشار تایپاسکریپت به NPM بدون JS
چگونه فایل *.ts خود را که فقط شامل تعریف نوع و رابط است، در NPM منتشر کنم؟
هیچ تابع، شیء جاوااسکریپت صادر شدهای وجود ندارد.
آیا باید این را حذف کنم؟ "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>>
پاسخ شماره ۱
من نگاهی به مثالهای موجود در DefinitelyTyped (مثلاً بستههای @types/...) میاندازم.
بر اساس این، من معتقدم:
"main"میتواند یک رشتهی خالی ("") باشد"types"باید به"index.d.ts"شما اشاره کند- بستهی شما نباید شامل هیچ فایل
*.tsباشد (در عوض باید شامل فایلهای*.d.tsباشد)
این ممکن است همچنین مفید باشد که بخوانید: https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html