[解決済み] クラスをパラメータとして渡すと "is not newable "エラーが発生する。
2023-06-29 02:53:29
質問
あるクラスのインスタンスを作成し、それを返す関数に、パラメータとしてクラスを渡そうとしています。以下は私のコードです。
module A.Views {
export class View { ... }
}
module A.App {
export class MyApp {
...
registerView(viewKlass:A.Views.View):void
{
var test = new viewKlass;
}
}
}
これをコンパイルしようとすると、次のようになります。
(...): Value of type 'Views.View' is not newable.
私は何を間違えているのでしょうか?
newable型の値がオブジェクトのコンストラクタである場合、実行時にコンストラクタ関数をどのように渡せばよいのでしょうか?
どのように解決するのですか?
関数のシグネチャでオブジェクトとクラスを区別するためにtypeof(MyClass)というものが必要です。
とにかく、コンストラクタのタイプシグネチャを使えば、この問題は解決します。 このクラスで考えてみましょう。
class MyClass {
constructor (private name: string) {
}
}
そのクラスを関数内でインスタンス化できる型として渡すには、実際にはこのようにクラスのコンストラクタのシグネチャを複製する必要があります。
function sample(MyClass: new (name: string) => MyClass) {
var obj = new MyClass("hello");
}
EDIT : codeplexに簡単な解決策があります。
このようにクラスのインターフェイスを作成する必要があります。
interface IMyClass {
new (name: string): MyClass;
}
そして、これを関数のシグネチャで使用します。
function sample(MyClass: IMyClass) {
var obj = new MyClass("hello");
}
関連
-
[解決済み】TypeScriptの "not assignable to parameter of type never "エラーとは?
-
[解決済み] コンストラクトシグネチャを持つインターフェースはどのように機能するのですか?
-
[解決済み] tsconfig.jsonのtargetは何のためにあるのですか?
-
[解決済み] モジュールと名前空間 - Import vs Require Typescript
-
[解決済み] TypeScriptをminifiedコードにコンパイルすることは可能ですか?
-
[解決済み] spec/testフォルダを使用したtsconfigのセットアップ
-
[解決済み] TypeScript Mapファイルとは?
-
[解決済み] TypeScriptで単一のプロパティをオプションにする
-
[解決済み] 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でObject.keysがkeyof型を返さないのはなぜですか?
-
[解決済み] タイプスクリプト。カスタムタイプに対する typeof のチェック
-
[解決済み] spec/testフォルダを使用したtsconfigのセットアップ
-
[解決済み] TSにおける文字列列列挙型と文字列リテラル型の相違点
-
[解決済み] クラス内列挙型(TypeScript定義ファイル)
-
[解決済み] typescript の module.exports
-
[解決済み] Angular2 - Http POST リクエストパラメータ
-
[解決済み] TypeScriptでクラスを角括弧「<>」で囲むとはどういう意味ですか?
-
[解決済み] ユニオン配列型にマッピングするには?
-
[解決済み] Promise.all()をTypescriptで使用する方法