以下のように書く
type Myfunc = {
(str?: string) : void
(num?: number): void
}
const myFunc: Myfunc = (num) => {
console.log(num)
}
const myStrFunc: Myfunc = (str) => {
console.log(str)
}
myFunc(100)
myStrFunc('hoge')
このように書くと、関数ではなくプリミティブ型になる
string型を渡すとエラーになる
type Myfunc = {
str?: string // このように定義すると、関数ではなくプリミティブ型になる
(num?: number): void
}
// strを渡しているが、関数に対して型を当てているので、numを引数に持つ関数の方を型として設定してしまう
const myStrFunc: Myfunc = (str) => {
console.log(str)
}
myStrFunc('hoge') // TS2345: Argument of type string is not assignable to parameter of type number
エディターで関数がどのように定義されているか都度確認するとすぐ気づける & TypeScriptがどういう風に型を解釈するしようとするか考えるのが大事だと思った