我知道要比较两个字符串是否相等,解释器必须遍历两个字符串并比较每个字符。
这将使时间复杂度0(n),其中n最短字符串的长度。
但是,比较两个数字是否相等是0(1)。
这是为什么?解释器是否不必遍历每个数字以检查是否相等?
我有一个函数,其参数可以是空数组或带有字符串的数组。
所以我用联合类型来处理这个 [] | string[]
然后,在函数内部,我检查 array.length 是否> 0,如果是,则映射参数。
type Kennel = [] | string[]
const petDogs = (kennel: Kennel) => {
if (kennel.length > 0){
return kennel.map((name:string)=>name)
} else {
return "no doggies to pet"
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在编译时,我收到错误
Cannot invoke an expression whose type lacks a call signature. Type '(<U>(callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any) => U[]) | (<U>(callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[])' has no compatible …