[TypeScript]オブジェクト配列にしたら型が剥がれた

Vue.JS
Vueでこんな型を作った
type queryOptions = {
[index:string]:Ref|string|number
}
で、こんな感じでオブジェクト内のキーと値をとってみたのだが・・・
for(const key in options) {
  if(typeof(options.query[key])==='object'){
    console.log((options.query[key]).value);
  }else{
  // stringとnuberのとき
  }
}
するとこんなエラーが
日本語
プロパティ 'value' は型 'string | number | Ref<any>' に存在していません。'valueOf' ですか?
プロパティ 'value' は型 'string' に存在しません。ts(2551)

英語版
TS2551: Property 'value' does not exist on type 'string | number | Ref<any>'. Did you mean 'valueOf'?
Property 'value' does not exist on type 'string'.
Ref型の型が剥がれちゃって、valueプロパティーにアクセスできません。
色々試した結果、こんな感じに書くとキャストできる模様。
console.log((<Ref>options.query[key]).value);

ジェネリクスでキャストするのか・・・。

Amazon.co.jp
タイトルとURLをコピーしました