Ricerca nel sito web

javascript - Typescript non riesce a trovare il nome della propria classe quando importa Node.js


Sto cercando di usare una classe di node.js (net in questo caso) in una classe che ho definito.

Connection.ts:

import net = require('net');
class Connection  {

}

Poi faccio riferimento alla mia classe in un altro file,

ConnectionContext.ts:

interface IConnectionContext {
    connection: Connection;
}

Quando ho questo codice, vedo un "Connection" sottolineato in ConnectionContext che dice "IConnectionContext.ts(3,17): errore TS2304: Impossibile trovare il nome 'Connection'"

se rimuovo l'importazione * come net dalla parte, l'errore di compilazione scompare.

Sono un po' confuso, quando guardo il JavaScript risultante, tutte le mie classi sembrano identiche nella loro creazione. Non sono sicuro del perché TypeScript dica che la classe non esiste.

Ecco il mio tsconfig:

{
    "compileOnSave": true,
    "compilerOptions": {
        "module": "commonjs",
        "outDir": "bin/",
        "noImplicitAny": true,
        "removeComments": true,
        "preserveConstEnums": true,
        "sourceMap": true,
        "moduleResolution": "node",
        "target": "es5"
    },
    "exclude": [
        "node_modules"
    ]
}

Sulla base di questo, cosa devo fare per far sì che la mia interfaccia veda la mia classe che usa i moduli di node.js?

Risposta n. 1

se rimuovo l'importazione * come net dalla parte, l'errore di compilazione scompare.

In assenza di un'istruzione import o export, il file è considerato globale. Non appena lo importi/esporti diventa un modulo e quindi deve essere importato.

Questo è trattato qui: https://basarat.gitbooks.io/typescript/content/docs/project/modules.html 🌹

Articoli correlati