所定のインターフェイスインターフェイス:機能活字体 - インタフェースに対する試験方法、すなわちT [ 'methodNameの']
const b = (x: string) : number;
目標考える
class A {
method(x:number) : string
}
- インタフェース
に対して機能をテスト実現
type InterfaceKey = {
method: any
};
function typecheck<T, K extends keyof InterfaceKey >(imp:() => T, d: T[K]) {
// K cannot be used to index type T^
imp();
return d;
}
typecheck(someclass, 555); // <-- type check _is actually works_ here
// or
function typecheck <T>(imp:() => T, d: any) {
imp();
if(!d) {
let mock: T;
mock.default = d; // default does not exists on type T
return mock;
}
return d;
}
最初のアプローチが唯一の方法であるように見えますし、(Webstormではtscではなく)タイプチェックを実行しますが、コンパイルはしません。
関連:https://github.com/Microsoft/TypeScript/issues/15768
あなたは何をしようとしているのかについて具体的に説明できますか?あなたは「テストする」という意味ですか? – dbandstra
クラスメンバーと関数の間のインターフェースを一致させたい。つまり、InterfaceKeyからメソッド名を選択し、クラスTからシグネチャを選択し、一部の関数に対して型検査を行います。 –