0
これまでのSOの質問の中には、&&
の推論型が最後の式の型であることが記載されています。以下のコードでTypeScript &&演算子は第2オペランドの型を生成しません
- TypeScript does not detect union type with an && operator
- Why does the && operator produce the type of the second operand
しかし、活字体2.4.2レポートのエラー:
function isQuerySql(sql: string): boolean {
return sql && _.trimStart(sql).toLowerCase().startsWith('select');
}
エラーTS2322:タイプ「ブール| "" 'は' boolean '型に代入できません。 '' '' '型は' boolean '型に代入できません。
何が間違っているかわかりません。 _.trimStart(sql).toLowerCase().startsWith('select')
はブール値として推論されます。 ""
はどこにありますか?あなたはこれを並べ替えることができます
isQuerySql("") === ""
isQuerySql("select") == true
isQuerySql("foo") == false
ので、戻り値の型が実際にboolean | ""
です:文字列sql
は、したがって、それは空の文字列を返し、機能isQuerySql
は&&
前に式を返します空である