TypeScriptでこういう動的な読み込みをする場合はこう書くらしい。
typescript
1// TypeScript 2 3// CommonJSの生のrequireのために型宣言 4declare var require; 5 6// fooの型情報だけをインポート。コンパイル後消える。 7import foo = require('./foo'); 8if (someCondition) { 9 // 実際に残る生のrequire 10 var f: typeof foo = require('./foo'); 11 f(); 12}
上はこちらの記事で読んだところです。
https://teppeis.hatenablog.com/entry/2014/05/typescript-external-modules
vueの単一ファイルコンポーネントを読み込むためにぼくも
declare var require: any
const modal = require('../vue/modal.vue').default;
このような書き方をして読み込みました。
この書き方じゃないと読み込めませんでした。
なぜrequireだけではダメなのでしょうか。
このdeclareというのは
"アンビエント宣言は、他のコンポーネント(例えば Web ブラウザや既存の JavaScript ライブラリ)から変数や関数などが提供されることを TypeScript コンパイラに伝えます。これは、既存の JavaScript ライブラリに静的型付けし、TypeScript で利用可能になることを意味します。"
という風にこちらの記事で説明されてました。
https://docs.solab.jp/typescript/ambient/declaration/
ここでいう提供される関数とは
requireのことでしょうか。
requireをtypescriptで使えるようにしてから使ってるという感じでしょうか。
追記
Coomon.jsとはjsに標準に備わってる関数が集められてるところでしょうか。
そのうちでrequire()のような型を宣言しないと使えない関数がある感じでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/03/28 04:00
2018/03/28 06:48
退会済みユーザー
2018/03/29 08:42 編集
退会済みユーザー
2018/03/29 09:04
2018/03/30 05:56
退会済みユーザー
2018/04/02 02:29
退会済みユーザー
2018/04/02 02:34
2018/04/02 07:48 編集
退会済みユーザー
2018/04/04 02:22 編集
退会済みユーザー
2018/04/04 02:17
退会済みユーザー
2018/04/04 02:20
退会済みユーザー
2018/04/04 02:29
2018/04/06 05:18 編集
退会済みユーザー
2018/04/10 03:20