Quoraの「TypeScriptって気持ち悪くないですか?」なる質問に、以下のコードと共に:
Aだと変数aに代入するときにエラーにならないのですが、Bだと変数aに代入するときに型のエラーになるんです。
え、なんで?同じ動きしているはずなのに。
const getA = () => { return 123; } const isString = (v: any) => { return typeof v === 'string'; }; let a: string | null; const main = () => { const _a = getA(); // if (typeof _a !== 'string') { return; } // A エラー if (!isString(_a)) { return; } // B OK a = _a; console.log(`${a}`); }; main();
なるほど(苦笑)。
次の文言もよくある。「開発言語/開発ツールなんてどうでもよくて、成果物が問題」という論法。
TypeScriptの装飾って開発者体験をあげるためだけなので、顧客体験にはほぼ影響しないわけで、私は仕事でプロダクト(生産物)に価値を与えたいのであって、開発者が幸せになるためという理由でデコトラのように電飾ギラギラのマウンティングとるために派手に自分のコードをコテコテしたいわけではないんです。
一種の詭弁だが、騙されやすい。