angular - fel TS2304: Kan inte hitta namnet 'InputEvent'
Som beskrivs i Does TypeScript have type definitions for InputEvent?, försökte jag använda @types/dom-inputevent för att få InputEvent i mitt Angular 7-projekt. Men det visar error TS2304: Cannot find name 'InputEvent' varje gång jag använder det.
Finns det något behov av att "registrera" det i Angular-projektet eller är det ett fel?
Om en lösning inte är tillgänglig, vill jag bara ha ett bekvämt sätt att uppnå samma resultat som event.data i InputEvent.
Tack!
Svar #1
Jag hade samma problem när jag försökte använda @types/dom-inputevent i enhetstester för en Angular 6-app. I mitt fall berodde det på att jag hade en uttrycklig 'types'-post i min tsconfig.spec.js, som beskrivs nedan.
tsconfig.json (irrelevanta delar utelämnade)
{
"compilerOptions": {
"typeRoots": [
"node_modules/@types"
]
}
}
tsconfig.spec.js (irrelevanta delar utelämnade)
{
"extends": "../tsconfig.json",
"compilerOptions": {
"types": [
"jasmine",
"node"
]
}
Som du kan se finns det en types-post som listar specifika typer som ska vara tillgängliga under kompilering. Detta åsidosätter typeRoots-inställningen i den överordnade tsconfig.json, så endast @types/jasmine och @types/node var tillgängliga när jag kompilerade mina enhetstester. Se även här: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#types-typeroots-and-types.
Lösning är att lägga till dom-inputevent i types-listan t.ex.
{
"extends": "../tsconfig.json",
"compilerOptions": {
"types": [
"jasmine",
"node",
"dom-inputevent"
]
}
Ett annat tillvägagångssätt hade varit att ta bort typen-posten helt och hållet. Om jag gjorde det, skulle typeRoots ha aktiverats och letat efter alla typer under node_modules/@types, och därmed även inkluderat @types/dom-inputevent.
