ts代码编译原理
核心原则之一:对值所具有的结构进行类型检查(鸭式辩型)
ts数据类型
ts的数据类型基础的有string, number, boolean, any, null, undefined, never
, 数组类型等等等。
ts里还有一些内置类型
例如在html中DOM元素的一些类型,实现复制功能时用到过HTMLTextAreaElement
, Selection
,Range
等
点击右侧查看更多https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model
@types
库里也有定义好的一些数据类型,可以引入使用。
数据类型有很多,多看多用多记,多多易善
可索引类型
interface IStringArray {
[index: number]: string
}
IStringArray具有索引签名,表示当用number去索引时,会返回string的值。
ts支持字符串和数字两种数据类型做索引签名。
问题: 数字索引的返回值必须是字符串索引返回值类型的子类型 ??
因为:数字类型的索引会先转成字符串,然后再去索引得到返回值。
当接口指定了可索引类型后,在定义其他属性时,也必须满足可索引类型, 如下:
interface IDictionary {
[index: string]: number;
length: number;
name: string; //这里会报错,因为不满足索引类型指定的返回值类型
}
接口属性也可以通过readonly指定为只读属性,只有首次给变量赋值时可以,不允许再次复制
interface和type
我理解的是interface用来定义接口数据结构,type是取个别名
例如
type FC<P = {
}> = FunctionComponent<P>;
interface FunctionComponent<P = {
}> {
(props: PropsWithChildren<P>, context?: any): ReactElement<any, any> | null;
propTypes?: WeakValidationMap<P>