これは私のサンプルコードです。タイプ「コンピュータ」は何のインデックス署名要素の暗黙性には、 'Computer'型にインデックスシグネチャがないため、 'any'型があります。
interface iAdd {
add(a: number): number;
}
class Computer implements iAdd {
add(a: number): number {
return a + 1;
}
add10(a: number): number {
return a + 10;
}
}
var computer = new Computer();
console.log(computer.add(1));
console.log(computer.add10(1));
// for now everything is working, however what i want is below,
let methodName:string = 'add10';
computer[methodName]();
// now there is an error:
// I don't want to use this way to fix, i want a safer way.
(<any>computer)[methodName](); // don't want this fix
を持っていないので、 [TS]要素暗黙的には「あらゆる」タイプを持っているあなたがはるかに「安全な方法」を取得することができなくなります私に
答えがNitzanにあります。私の本当の疑問は、どのくらい多くの関数があるのか分からず、コンピュータクラスも継承できるということです。より多くの関数を紹介し、methodNameは動的になり、実際の関数はその場で決定されます。どうやってやるの? –
私が最後にしたオプション( 'keyof'を使って)で動作するはずです。問題が発生した場合は、例で質問を更新してください。 –