Я смог импортировать, используя это, но я получаю следующую ошибку:

ема

Я не могу заставить библиотеку MSAL правильно импортировать в мой машинописный код. Я используюMSAL для JS библиотека (которая должна иметь типизацию) в простом проекте машинописного текста / реагирования с использованием сценария create-реагировать-приложения со сценариями реагирования-машинописи. Я новичок в машинописи и не уверен, что мне не хватает чего-то очевидного или есть проблема с пакетом MSAL при использовании его с проектами машинописи.

Подробности:Я добавил пакет MSAL из NPM, используяnpm install --save msal.Я попытался импортировать MSAL в мои .ts, используя различные формыimport {Msal} from 'msal';Это приводит к ошибке машинописиCould not find a declaration file for module 'msal'. '<path>/node_modules/msal/out/msal.js' implicitly has an 'any' type.Думая, что это было странно, я посмотрел на папку node_module / msal / out и увидел файл msal.d.ts, чего я и ожидал.Когда я смотрю на содержимоеmsal.d.ts файл, я не вижу экспорт, который я обычно ожидал бы увидеть.Я попытался установить объявление из @types, используяnpm install --save-dev @types/msal, но его не существует.Я также попытался импортировать его в свой файл, используяlet Msal = require('Msal');, но получите ошибку, что Msal.UserAgentApplication не является конструктором.Мне не повезло, когда я попытался использовать директиву /// reference и добавить тег script в основной файл index.html. Это также не похоже на правильный путь решения проблемы.ExampleMsal.ts
import { observable, action, computed } from 'mobx';
import * as Msal from 'msal'; // <-- This line gives the error

class ExampleMsal{
    @observable 
    private _isLoggedIn: boolean;

    constructor() {
        this._isLoggedIn = false;
    }

    @computed 
    get isLoggedIn(): boolean {
        return this._isLoggedIn;
    }

    @action 
    signIn() {

        let userAgentApplication = new Msal.UserAgentApplication('<client-id>', null, 
        function (errorDes: string, token: string, error: string, tokenType: string) {
            // this callback is called after loginRedirect OR acquireTokenRedirect 
            // (not used for loginPopup/aquireTokenPopup)
        }
        );

        userAgentApplication.loginPopup(['user.read']).then(function(token: string) {
            let user = userAgentApplication.getUser();
            if (user) {
                // signin successful
                alert('success');
            } else {
                // signin failure
                alert('fail');
            }
        }, function (error: string) {
            // handle error
            alert('Error' + error);
        });        
        this._isLoggedIn = true;
    }

    @action 
    signOut() {
        this._isLoggedIn = false;
    }
}

export default ExampleMsal;
tsconfig.json
{
  "compilerOptions": {
    "outDir": "build/dist",
    "module": "commonjs",
    "target": "es5",
    "lib": ["es6", "dom"],
    "sourceMap": true,
    "allowJs": true,
    "jsx": "react",
    "moduleResolution": "node",
    "rootDir": "src",
    "forceConsistentCasingInFileNames": true,
    "noImplicitReturns": true,
    "noImplicitThis": true,
    "noImplicitAny": true,
    "strictNullChecks": true,
    "suppressImplicitAnyIndexErrors": true,
    "noUnusedLocals": true,
    "experimentalDecorators": true
  },
  "exclude": [
    "node_modules",
    "build",
    "scripts",
    "acceptance-tests",
    "webpack",
    "jest",
    "src/setupTests.ts"
  ],
  "types": [
    "typePatches"
  ]
}

Ответы на вопрос(4)

Ваш ответ на вопрос