私たちは、オブジェクトとしてもインターフェイスとしても使う必要があるクラスを持っています。クラスは本当に長い名前を持っているので、我々は一定にして、それを投げたが、その後、奇妙なことが起こった:typescriptのオブジェクトと型の両方としてconstを使用していますか?
class MyClassWithAReallyLongNameThatIsAnnoyinToUse {
constructor(public name: string) {}
static className = "SomeThing:MyClassWithAReallyLongNameThatIsAnnoyinToUse";
}
// Convenience const to shorten
const MyClassConst = MyClassWithAReallyLongNameThatIsAnnoyinToUse;
let someFunction = (staticClassObject: Object, callback) => {};
// this errors, saying 'Cannot find name MyClassConst'
someFunction(MyClassConst, (cmd: MyClassConst) => { /* do some thing */ });
をしかし、私たちはconst
以下type
別名で投げた場合、それが動作します:
class MyClassWithAReallyLongNameThatIsAnnoyinToUse {
constructor(public name: string) {}
static className = "SomeThing:MyClassWithAReallyLongNameThatIsAnnoyinToUse";
}
// Convenience const to shorten
const MyClassConst = MyClassWithAReallyLongNameThatIsAnnoyinToUse;
type MyClassConst = MyClassWithAReallyLongNameThatIsAnnoyinToUse; // <<<<<<<<<<<<<
let someFunction = (staticClassObject: Object, callback) => {};
// this is fine
someFunction(MyClassConst, (cmd: MyClassConst) => { /* do some thing */ });
これは本当に奇妙なようです。 constを変更するだけでなく、同じ割り当てで同じものを2回定義しています。異なるキーワードです。代わりにconstの各場所でプレーンな長いクラス名を使用すると、問題なく動作します。クラスがconstを通してプロキシされているときに問題を引き起こすようにみえるだけです(あるいはletやvarも同様に試みました)。
これはちょうど私たちが暮らしていなければならない変わったものなのでしょうか、あるいは型を得るためにconstで呼び出せるものがありますか?それとも、もう一つの課題がありますか?
私は完全にタイプエイリアスについてのOPの一部を逃したので、私は再び書いた答え –