Typescript kütüphanemin bildirim dosyasını mevcut olmasına rağmen bulamadım


Bu diğer soruda bahsedilen tam olarak aynı soruna sahibim, ama ne yazık ki bunu aynı şekilde çözememiştim.

Temelde bir Typescript kütüphanesi yazdım ve şimdi, yayınlamadan önce, onu yerel olarak test etmek ve doğru şekilde içe aktarılıp aktarılmadığını kontrol etmek istiyorum.

Bu benim test proje ağacım:

.
├── js-src
│   └── index.js
├── node_modules
│   └── response-giver -> ../../response-giver
├── package-lock.json
├── tsconfig.json
└── ts-src
    └── index.ts

Modülümü doğrudan benim depomda görebilirsiniz: https://github.com/Giovarco/response-given/tree/develop

Sorunu çözmek için modülümde tsconfig.json'u değiştirmeye çalıştığım şekil şuydu:

{
    "compilerOptions": {
        "emitDecoratorMetadata" : true,
        "experimentalDecorators" : true,
        "module" : "commonjs",
        "target" : "ES5",
        "watch" : true,
        "outDir" : "js-src",
        "rootDir" : "ts-src",
        "declaration": true,
        "allowJs": false,
        "lib": [ "es2015" ],
        "typeRoots": [
            "node_modules/@types",
            "js-src/index"
        ],
        "main" : "js-src/index"

    }
}

Modülümü bu şekilde içe aktarmaya çalışıyorum:

import * as responseGiver from "response-giver";

ama bu hatayı alıyorum:

[ts]
Could not find a declaration file for module 'response-giver'. '/home/mario/Git projects/response-giver/js-src/index.js' implicitly has an 'any' type.
  Try `npm install @types/response-giver` if it exists or add a new declaration (.d.ts) file containing `declare module 'response-giver';`

Yine de işe yarayan şey şudur:

import * as responseGiver from "../node_modules/response-giver";

ama onları kullanmaya çalıştığımda fonksiyonlarım için doğru imzayı alamıyorum.

Cevap #1

node_modules/@types/response-giver var mı?

Cevap #2

İşte problemi böyle çözdüm. Temelde package.json'a "types": "js-src/index.d.ts" ekleyin.