web-dev-qa-db-ja.com

「エラーTS2351を解決する方法:型に呼び出しまたは署名の構成がない式では「new」を使用できません。」

私はreactjs&TypeScriptアプリケーションにAuth.jsと呼ばれる.jsファイル(.tsファイルではない)をインポートしているので、コンポーネントにはこれがあります:

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

これは私の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);
        }
..

Webpackを実行すると、次のエラーメッセージが表示されます。

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

このTSエラーを解決するにはどうすればよいですか?

16
bier hier

* asを削除してみてください。 Authをデフォルトとしてエクスポートしています。 *または{}なしで直接インポートするデフォルトのエクスポートプロパティ。

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