angular2/typescript のインポートに問題があります。 'app/components/calendar' のようなルートでインポートを使用したいのですが、代わりに使用できる唯一の方法は次のようになります:
//app/views/order/order-view.ts
import {Calendar} from '../../components/calendar
ここで、Calendar は次のように定義されます。
//app/components/calendar.ts
export class Calendar {
}
これは明らかに、階層が下に行くほど悪化します。最深部は「../../..」ですが、それでも非常に悪く、脆弱です。プロジェクト ルートを基準としたパスを使用する方法はありますか?
私は Visual Studio で作業していますが、相対インポートだけが VS がこれらのインポートを認識できるようにする唯一の方法のようです。
ベストアンサー1
答え
TypeScript 2.0 以降では、tsconfig.json プロパティを次のように設定できますbaseUrl
。
{
"compilerOptions": {
"baseUrl": "app"
}
次に、次のような希望の方法でコンポーネントをインポートします。
import { Calendar } from 'components/calendar';
付録
フォールバックパスの解決
重要な考慮事項は、baseUrl
オプションを指定すると TypeScript コンパイラが次の処理を実行することです。
- baseUrlに関するパスを検索する
moduleResolution
解決に失敗した場合(モジュールが見つからない)、オプションに関するパスを検索します
システムJS
systemjs.config.js
SystemJS は Angular 開発段階で頻繁に使用されるため、パスが正しく解決されるように、それに応じて設定も行うようにしてください。