J'ai installé @types/stripe-v3
et le fichier JavaScript de Stripe inclus dans une balise de script dans index.html
. Soi-disant le Angular doit inclure tous les fichiers automatiquement à partir des modules de nœud @Types. Lecture sur Internet et regarder @types/stripe-v3/index.d.ts
Il devrait y avoir une bande variée déclarée globalement si le fichier est inclus par le compilateur. De index.d.ts
declare var Stripe: stripe.StripeStatic;
Dans mon fichier de service, j'ai le code suivant:
import { Injectable } from '@angular/core';
import { environment } from '../environments/environment';
@Injectable({
providedIn: 'root'
})
export class BetalingService {
stripe = Stripe(environment.stripeKey);
constructor() { }
}
Entraînant l'erreur suivante:
error TS2304: Cannot find name 'Stripe'.
Les types d'importations angulaires basés sur des valeurs de compilerOptions.types
et compilerOptions.typeRoots
Dans le fichier de configuration dossier. TS CompilerOptions Docs Référence
Par défaut Angular projets créés à l'aide de angular CLI aura deux fichiers de configuration dossiers.
tsconfig.json
à la racine du projettsconfig.app.json
dans /src
répertoireSi les deux types
et typeRoots
sont indéfinis angular Iportera toutes les dactylographies de node_modules/@types/*
.
Mais si quelqu'un d'entre eux a une valeur, seuls les types spécifiés ou les types de l'emplacement spécifié seront importés. Par exemple: types: ['stripe-v3'] or typeRoots: ['/someDir']
. Donc, tous les autres types installés dans node_modules/@types/*
ne sera pas importé.
Si une matrice vide est définie, aucun type ne sera automatiquement importé de node_modules/@types
. types: [] or typeRoots: []
.
Par défaut compilerOptions.types
dans tsconfig.app.json
aura un tableau vide comme valeur. C'est la raison pour laquelle angular== ne reçoit pas les dactylographies installées de node_modules/@types/*
automatiquement.
Pour résoudre ce problème: npm install @types/stripe-v3
les typages et en tsconfig.app.json
stripe-v3
au types
....
"compilerOptions": {
...
"types": ['stripe-v3']
}
Si vous ajoutez, vous devrez ajouter toutes les options futures à ce tableau.
Au lieu de cela, si vous supprimez types
de compilerOptions
angular Iportera automatiquement toutes les options futures.
Assurez-vous également de vérifier types
et typeRoots
in tsconfig.js
aussi. typeRoots
aura des chemins relatifs en tant que tableau et la même logique s'applique également ici.