J'ai une petite petite bibliothèque Typescript que j'essaie de publier sur npmjs avec les bons types. Cependant, il semble qu'il n'exporte pas correctement le fichier de types.

J'ai une méthode simple dans le fichier src/index.ts et les typages de src/typings/index.d.ts. (certains noms de fonctions / paramètres renommés)

import { CoolData } from "./typings";
export const sampleExport = async (): Promise<CoolData[]> => {}

C'est mon tsconfig.json

{
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "moduleResolution": "node",
        "esModuleInterop": true,
        "resolveJsonModule": true,
        "lib": ["es6"],
        "declaration": true,
        "declarationMap": true,
        "declarationDir": "dist",
        "outDir": "dist",
        "rootDir": "src",
        "strict": true
    },
    "include": ["src"],
    "exclude": ["node_modules", "**/*.spec.ts", "dist"]
}

Et partielle package.json

"main": "dist/index",
"types": "src/typings/index.d.ts",
"files": [
    "dist",
    "src/typings/index.d.ts"
],

Lorsque le index.d.ts est généré dans le dossier dist, il a le mauvais chemin référencé aux typages.

import { CoolData } from "./typings";
// Cannot find module './typings' or its corresponding type declarations.

Même si c'est le cas, je peux toujours publier et utiliser la bibliothèque. Cependant, l'inconvénient est qu'il renvoie un type any pour la méthode.

await sampleExport([]); // return type Promise<any>

J'essaie de résoudre ce problème depuis un certain temps, mais en vain. J'espère que quelqu'un pourra m'aider. Merci.

Éditer:

Si je devais autoriser Typescript à générer automatiquement mes typages, il générerait cela dans dist/index.d.ts avec l'erreur

import { CoolData } from "./typings";
// Cannot find module './typings' or its corresponding type declarations.
export declare const sampleExport: () => Promise<CoolData[]>;
//# sourceMappingURL=index.d.ts.map
0
MrYanDao 13 mars 2021 à 05:03

1 réponse

Meilleure réponse

Il suffit d'exporter une déclaration de fonction dans src/typings/index.d.ts

export declare function sampleExport(): Promise<CoolData[]>;

Et supprimez declaration et declarationMap dans tsconfig.json

0
MrYanDao 14 mars 2021 à 02:05