Mam zależność NPM (electron-is-accelerator) w moim projekcie maszynopisowym, który nie ma żadnych typów, ani w ramach pakietu, ani jako części zdecydowanej. Zależność składa się z modułu z jednym funkcją przyjmującą ciąg i zwracanie boolowskiego. Napisałem definicję typu Party-NPM-MODULE-B1F75808ED2 "Rel =" Nofollow NefErr "> Ten artykuł :

declare module 'electron-is-accelerator' {
    export function isAccelerator(s: string): boolean;
}

Próbowałem wykonać tę funkcję tak, jak:

import { isAccelerator } from 'electron-is-accelerator';

console.log(isAccelerator("Alt+Space")); 

Ale otrzymuję następujący błąd wykonania:

TypeError: electron_is_accelerator_1.isAccelerator is not a function

Jak mogę to uruchomić?

Mój tsconfig.json:

{
    "compilerOptions": {
        "outDir": "./built",
        "module": "commonjs",
        "target": "es6",
        "noImplicitAny": true,
        "sourceMap": false
    },
    "include": [
        "src/**/*"
    ]
}

Przesłałem minimalny przykład demonstracyjny tutaj dla każdego, kto chce się bawić problem.

0
303 1 grudzień 2019, 22:53

1 odpowiedź

Najlepsza odpowiedź

To Pakiet używa składni Commonjs module.exports Aby wyeksportować funkcję:

module.exports = function (str) { ... };

module.exports jest inny niż składnia ES {X1}} Składnia i nazwana deklarację eksportu w powyższym przykładzie, więc TS ma {x2}}, import = require(), aby wyrazić te imporę / eksport. electron-is-accelerator można wpisać następującą deklaracją:

declare module "electron-is-accelerator" {
  function isAccelerator(s: string): boolean;

  export = isAccelerator;
}

Import wygląda tak:

import isAccelerator = require("electron-is-accelerator")

isAccelerator("whatever")

Jeśli {X0}} jest włączony, możesz go napisać jako ES Domyślny import:

import isAccelerator from "electron-is-accelerator"
1
ford04 2 grudzień 2019, 12:25