web-dev-qa-db-fra.com

Comment résoudre "l'erreur TS2351: impossible d'utiliser" nouveau "avec une expression dont le type n'a pas d'appel ni de signature de construction."?

J'importe un fichier .js (donc pas un fichier .ts) appelé Auth.js dans mon application reactjs & TypeScript. Ainsi, dans mon composant, j'ai ceci:

import * as Auth from '../Auth/Auth';
..
const auth = new Auth();

Cela fait partie de mon Auth.js:

    export default class Auth {
        auth0 = new auth0.WebAuth({
            domain: AUTH_CONFIG.domain,
            clientID: AUTH_CONFIG.clientId,
            redirectUri: AUTH_CONFIG.callbackUrl,
            audience: `https://${AUTH_CONFIG.domain}/userinfo`,
            responseType: 'token id_token',
            scope: 'openid'
        });

        constructor() {
            this.login = this.login.bind(this);
            this.logout = this.logout.bind(this);
            this.handleAuthentication = this.handleAuthentication.bind(this);
            this.isAuthenticated = this.isAuthenticated.bind(this);
        }
..

Lorsque j'exécute Webpack, le message d'erreur suivant s'affiche:

ERROR in ./src/containers/main.tsx
(16,14): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.

Comment puis-je résoudre cette erreur TS?

16
bier hier

Essayez en enlevant * as. Vous exportez Auth par défaut. Propriété d'exportation par défaut que nous importons directement sans aucun * ou {}.

import Auth from '../Auth/Auth';
..
const auth = new Auth();
31
Kishan Mundha