[解決済み】ブロックスコープ付き変数の再宣言ができない(typescript)
質問
私はnodeアプリを構築しており、.jsの各ファイルの内部は、様々なパッケージでこれを必要とするために使用されています。
let co = require("co");
しかし
などです。つまり、typescriptを使用すると、プロジェクト全体でこのような宣言/要求は1つしかできないようですね?
私は次のように考えていたので、この点について混乱しています。
let
は、現在のファイルにスコープされていました。
あるプロジェクトが動作していたのですが、リファクタリング後、あちこちでこのようなエラーが発生するようになりました。
どなたか説明してください。
どのように解決するのですか?
エラーそのものについて
let
を宣言するために使用されます。
ローカル
の中に存在する変数です。
ブロックスコープ
関数スコープではなく また
var
だから、こんなことはできない。
if (condition) {
let a = 1;
...
let a = 2;
}
また、以下のことに注意してください。
case
の中の節は
switch
ブロックは独自のブロックスコープを作成しないので、同じローカル変数を複数の
case
を使用せずに
{}
を使用して、それぞれブロックを作成します。
インポートに関しては、おそらくTypeScriptがあなたのファイルを実際のモジュールとして認識せず、一見モデルレベルの定義がそのためのグローバル定義になってしまうために、このエラーが発生しているのでしょう。
外部モジュールのインポートは、標準の ES6 この方法では、明示的な代入は行われず、TypeScript があなたのファイルをモジュールとして正しく認識するようになります。
import * as co from "./co"
という名前のものがあると、やはりコンパイルエラーになります。
co
は、予想通り、すでに 例えば、これはエラーになりそうです。
import * as co from "./co"; // Error: import definition conflicts with local definition
let co = 1;
エラーが発生した場合 モジュール co" が見つかりません。 ...
TypeScriptはモジュールに対して完全な型チェックを実行しているので、インポートしようとしているモジュールのTS定義がない場合(定義ファイルのないJSモジュールである場合など)には
宣言
モジュールは
.d.ts
の定義ファイルには、モジュールレベルのエクスポートは含まれていません。
declare module "co" {
declare var co: any;
export = co;
}
関連
-
[解決済み】「TS2532: Object is possibly 'undefined'」というエラーを解決するにはどうしたらいいですか?
-
[解決済み] TypeScript getting error TS2304: cannot find name ' require'.
-
[解決済み] Webpack with typescriptでTypeScript emitted no outputエラーが発生する。
-
[解決済み] TypeScriptで文字列を数値に変換する方法とは?
-
[解決済み] TypeScript で `window` に新しいプロパティを明示的に設定するにはどうすればよいですか?
-
[解決済み] TypeScriptでの取得と設定
-
[解決済み] TypeScriptでパラメータとして強く型付けされた関数は可能か?
-
[解決済み] ジェネリックスを使用したTypescriptのarrow関数の構文はどのようになっていますか?
-
[解決済み] チェックした後に○○の表現が変わっている
-
[解決済み】TypeScriptのインターフェースと型について
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Typescript: スプレッド型はオブジェクト型からしか作成できない
-
[解決済み] Angular 2の@ViewChildアノテーションがundefinedを返す
-
[解決済み] TSLintの "文字列リテラルによるオブジェクトアクセス "を回避するためのコードの書き換え方法
-
[解決済み] as "というキーワードは何を意味するのでしょうか?
-
[解決済み] TypeScriptのハッシュマップ/辞書インターフェイス
-
[解決済み] TypeScriptのInterface Function Property。何が違うの?
-
[解決済み] クラスのプロパティが整数であることはどのように指定するのですか?
-
[解決済み] AngularでNameServiceのプロバイダがない
-
[解決済み】オブジェクトの配列を定義するにはどうしたらいいですか?
-
[解決済み】TypeScriptの関数のオーバーローディング