【发布时间】:2019-10-15 22:48:26
【问题描述】:
当我使用 useState<Options[]> 作为反应钩子时,当我输入错误 {...options} 而不是 [...options] 时,我只是在尝试访问“数组”(对象)的 .map 并得到一个时才发现类型错误。让我举一个可以澄清我的问题的例子:
interface Option {
title: string;
isSelected?: boolean;
}
function myFunc(options: Option[]): void {}
const options: Option[] = [{title: 'Male', isSelected: true}, {title: 'Female'}, {title: 'Other'}];
const options2 = {...options};
myFunc(options);
myFunc(options2); // why isn't this an error ?
【问题讨论】:
-
短:typeof数组是对象,所以打字稿不关心,意思是数组可以转换为对象,反之亦然
-
@MedetTleukabiluly 肯定 TS 已经区分了
T[]和T,所以它不像“数组是对象”那么简单,因为如果这是真的T[] = T如果T是一个对象。从 this example 来看,它似乎将类似数组的数组视为相同,但可能有一个选项来限制它。
标签: typescript types