[解決済み] typescriptから.d.tsなしで外部の非typescriptライブラリを使用するには?
質問
.htmlファイルでこれらを定義しています。
<script type="text/javascript" src="bower_components/tree.js/tree.min.js"></script>
<script type="text/javascript" src="bower_components/q/q.js"></script>
<script type="text/javascript" src="test.js"></script>
次にtest.jsで。
var myTree = Tree.tree({})
しかし、Typescript は次のようにエラーになります: "Cannot find name 'Tree'"
また、コンパイル時に
--module amd
でコンパイルし
import Tree = require("model/tree");
を test.js ファイルの先頭に配置しても、またエラーになります。
Cannot find external module 'model/tree'.
しかし、明らかに有効なインポートであるはずです。
https://github.com/marmelab/tree.js/blob/master/src/main.js
私は ではない は、使用したい外部 javascript ファイルごとに .d.ts ファイルを書きたいのですが、それは本当に Typescript が私にさせたいことなのでしょうか?
どのように解決するのですか?
利用したい外部 javascript ファイルごとに .d.ts ファイルを書きたくないのですが、これは本当に Typescript が私にやらせたいことなのでしょうか?
いいえ、最もシンプルで迅速な解決策は、単純に、何らかの変数
Tree
があると伝えることです。これは次のように簡単です。
declare var Tree:any; // Magic
var myTree = Tree.tree({})
TypeSafetyはTypeScriptではスライド式になっています。この場合、コンパイラに対して、以下のようなものがあることを伝えているだけである。
Tree
というものがあることをコンパイラに伝えているだけで、それ以上の型安全性にはあまり関心がない。
が存在するという事実以上の型安全性は気にしません。
.
もっと見る
IMHO ライン
declare var Tree:any;
という行は、他のJS検証ツールがコードに存在しない変数の使用を宣言するために書かせるよりも、はるかにシンプルな構文です。
更新
interface ITree {
.. further methods and properties...
}
interface ITreeFactory {
tree(input: { [key: string]: any }): Itree
};
declare var Tree: ITreeFactory; // magic...
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン