質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

1回答

193閲覧

任意のプロパティを持つオブジェクト(Record<string,string>)に対する型ガードの作り方は?

noc

総合スコア73

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2022/06/24 03:44

編集2022/06/24 03:45

あるオブジェクトが 下記 Holder 型であることを保証する型ガード関数 isHolder を作っているのですが、 Record<string,string> (または [key:string]: string)であることを保証する方法がわかりません。どうすればいいでしょうか?

typescript

1type Holder = { 2 something:{ 3 [key: string]: string 4 } 5} 6function isHolder(target: any): target is Holder{ 7 return ( 8 typeof target == 'object' && 9 'something' in target && 10 typeof target.something == 'object' 11 // something の中身が [key:string]: string であることを確認する方法がわからない 12 ) 13}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

単純に、Object.valuesに対して.everyでチェックしてはどうでしょうか?

javascript

1Object.values(target.something).every(item => typeof item === 'string')

投稿2022/06/24 03:55

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2022/06/24 04:07

なお、JavaScriptのオブジェクトは、数値キーも文字列に変換してしまうため、「もとから数字文字列で入れたもの」と「数値キーとして入れたもの」の区別はつきません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問