web-dev-qa-db-ja.com

Angular 1.x with TypeScript 2.x、@ types、およびSystemJS-グローバルタイピングの使用

Angular 1.xを新しいTS2および@typesレジストリで使用しようとしていますが、問題が発生しています。@ typesは、タイピングレジストリが「グローバル」タイピングと呼んでいたものを使用していないようです。次のエラーが発生しています:

error TS2686: 'angular' refers to a UMD global, but the current file is a module. Consider adding an import instead.

angularコードは次のとおりです。

import "angular";
import "angular-route";

const app = angular.module("charter-app", ["ui.bootstrap", "ui.router", "templates", "charter-app.controllers"]);

tsconfig.json:

{
    "compilerOptions": {
    "declaration": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "mapRoot": "./",
    "module": "system",
    "moduleResolution": "node",
    "sourceMap": true,
    "target": "es5",
    "inlineSources": true,
    "removeComments": false,
    "noImplicitAny": false,
    "typeRoots": [ "node_modules/@types/" ],
    "types": [ "angular", "angular-ui-bootstrap", "angular-ui-router" ],
    "outFile": "app.js"
    }
 }

以下を使用しようとしています

"devDependencies": {
    "@types/angular": "^1.5.20",
    "@types/angular-ui-bootstrap": "^0.13.35",
    "@types/angular-ui-router": "^1.1.34",

コンパイルにはgulp-TypeScriptを使用しています。何が欠けていますか?この目的で@typesライブラリを使用できませんか?

16
Kerry Ritter

このインポートをコードに追加します

import * as angular from "angularjs";

詳細は TypeScript Angular Import を参照してください

3
Daniel Pamich

私はWebstormのファイルウォッチャーを構築していたIDEこの問題に遭遇しました。それを解決するには、@types/angularを削除し、typings angularを追加し、typings angularを追加して、オプションに--types {your file dir}/typings/index.d.tsを追加します。同様に、それをtsconfig.jsonに追加できます

これがあなたが望んでいた解決策ではないことは知っていますが、それはそのこぶを乗り越えました。

1
Augie Gardner