TypeScriptを使用してNodeJSでbase64エンコードを実行しようとしています。
JavaScriptで正常に動作する次のコード。
TypeScriptで同じことを書いてコンパイルすると、Buffer is find notエラーが発生します。
var base64Policy = new Buffer(stringPolicy, 'utf-8').toString('base64');
誰かがTypeScriptで同じことをするのを手伝ってくれますか?.
この行を上部に追加します。
declare const Buffer
エラーなしでコンパイルする必要があります。
ライブラリまたは他のグローバルオブジェクトに組み込まれたノードを使用するには宣言が必要です。上記のように手動で宣言できます。
TypeScriptの新しいバージョンでは、公式の宣言ファイルも使用できます。
npm i -g TypeScript@next
npm i --save-dev @types/node
他のライブラリの場合、@types/library_name
。
詳細: 宣言ファイルの取得の改善 、 宣言ファイルの未来
プロローグ
Buffer は Node.js API の一部です。 TypeScriptはデフォルトでNode.jsのクラスを認識しないため、Node.jsの 宣言ファイル (タイプ定義)をインストールする必要があります。
次のエラーが表示される場合、タイプ定義を手動でインストールする必要があります。
エラーTS2304:名前 'Buffer'が見つかりません。
タイプ定義のインストール
typings ツールを使用して、タイプ定義をインストールできます。これを行う方法を紹介します。
Npmでtypings
ツールをインストールします。
_npm install -g typings
_
DefinitelyTyped (_~dt
_)リポジトリからNode.jsのタイプ定義をインストールします。
_typings install dt~node --global --save
_
タイピングツールは、次のディレクトリ「_typings/globals/node
_」を作成し、「_typings/index.d.ts
_」にリンクします。解決された型定義を参照する_typings.json
_(_--save
_オプションのため)というファイルもあります。
_{
"globalDependencies": {
"node": "registry:dt/node#6.0.0+20160621231320"
}
}
_
注:「typings\globals\node\index.d.ts(71,26):エラーTS1110:Type expected」というエラーが表示される場合、Node.jsの定義が最近のものです。タイピングツールには 最新の型宣言の問題 があります。このような場合は、_typings.json
_ファイルのバージョンを確認するだけです。私にとって_node#6.0.0+20160621231320
_は機能していましたが、_node#6.0.0+20161212163245
_は機能していませんでした。
index.d.ts
_を追加するだけです(Buffer
クラスを使用します)。YourClass.ts
_/// <reference path="../../typings/index.d.ts" />
export class YourClass {
private static toString(encoded: string): string {
return new Buffer(encoded, "base64").toString();
}
}
_
UPDATE:
TypeScript 2.0のリリース では、新しい型定義システムが発表されました。
これで、typings
ツールを忘れることができます。必要なことは、このコマンドを実行して Node.jsのTypeScript定義 をインストールすることだけです。
_npm install --save @types/node
_
_tsconfig.json
_に次のエントリがあることも確認してください。
_{
"compilerOptions": {
"moduleResolution": "node",
...
},
"exclude": [
"node_modules",
...
]
}
_
追伸(Node.jsに含まれる)他のクラスの型定義が必要な場合は、ここで検索できます: http://Microsoft.github.io/TypeSearch/
バッファはNode
名前空間からのものです。最初のインストール
npm install --save @types/node
次に、compilerOptions
セクション内のtsconfig.json
ファイルに以下のコードを追加します
"types": ["node"],
"typeRoots": ["node_modules/@types"]
typeRoots
エントリは、含めるタイプ定義ファイルのディレクトリのリストを指定します。 TypeScriptバージョン2.0以降が必要です。