TypeScript 関数のパラメータは反変であるべき

string | number は string のスーパークラスなので、child に (_: string) => console.log('child’)は入れられるべきではない。

type ParentFunc = (_: string | number) => void
const child: ParentFunc = (_: string) => console.log('child')

strictFunctionTypesがtrueだと、関数のパラメータを反変で制限してくれるので、上記はコンパイル時にエラーになるので安全。