typescript - fel TS2318: Kan inte hitta global typ 'Object'


Väldigt enkelt projekt, ingen tsconfig.json, bara använder kommandoraden:

tsc --jsx react --target es6 --lib dom src/lib/Fetch.tsx

och jag får följande fel och jag förstår inte varför, dessa typer är bokstavligen definierade överallt, och specifikt i lib.es6.d.ts som jag tror inkluderas av --target es6

error TS2318: Cannot find global type 'Array'.
error TS2318: Cannot find global type 'Boolean'.
error TS2318: Cannot find global type 'Function'.
error TS2318: Cannot find global type 'IArguments'.
error TS2318: Cannot find global type 'Number'.
error TS2318: Cannot find global type 'Object'.
error TS2318: Cannot find global type 'RegExp'.

Ha följande beroenden installerade

"dependencies": {
  "@types/react-dom": "^16.0.6",
  "@types/react": "^16.3.16",
  "react": "^16.4.0",
  "react-dom": "^16.4.0"
},
"devDependencies": {
  "@types/node": "^10.3.1",
  "typescript": "^2.9.1"
}

UPPLÖST

Listade ut mitt problem. Jag hade TypeScript installerat lokalt, men körde den globalt installerade och äldre versionen av TypeScript. När jag körde tsc via npm-skript kompilerar det med följande kommando:

tsc --jsx react --target es6 --module commonjs src/lib/Fetch.tsx

Svar #1

dom innehåller bara definitionerna för webbläsarspecifika DOM-element. Du måste inkludera ett av es*-biblioteken som innehåller de grundläggande ES-typerna som behövs för kompilering. När du anger ett --lib-alternativ måste du inkludera alla nödvändiga typer, kompilatorn kommer inte längre att inkludera något bibliotek baserat på ditt mål:

tsc --jsx react --target es6 --lib es2015,dom src/lib/Fetch.tsx

Eller om du faktiskt inte bara använder standardbiblioteken, kan du helt enkelt utelämna alternativet helt:

tsc --jsx react --target es6 src/lib/Fetch.tsx

Relaterade artiklar