前端系列三十四:TS类型兼容
来源:http://www.tudoupe.com时间:2022-01-05
类型兼容性:
两种类型系统:
一、结构类型制度
2. 名义类型系统(Type系统指标)
TS采用结构化类型系统,有时称为鸭打字,其中“类型检查与数值的形式有关。”
换句话说,在结构型体系中,两种形状相同的东西被认为属于同一类型。
写法:
class Point { x: number; y: number }
class p: Point { x:number; y: number }
const p: Point = new Point2D( )
解释:
一. 点和点2D是两个不同的类别。
two. 变量 p 类型被列为点, 但其值为点2D, 没有类型问题 。
三,因为TS是一个结构化的型号系统,只是看看点和点2D结构是否相等(它们具有相同的x和y特性和相同的属性类型)。
然而,如果使用名义类型系统(如C#、Java等),它们属于不同类别,不兼容。
声称结构型系统中的两个物体如果具有相同形式,则被视为同一类型的物体是不正确的。
更准确的说法:
对象类型的 Y 成员至少与 x 相同, 使其与 x 兼容 。
写法:
class Point { x: number; y: number }
class Point3D { x: number; y: number; z: number }
const p: Point = new Point3D( )
解释:
一.Point3D成员“至少”与点相同,点兼容点3D与点相同。
因此,成员人数众多的Point3D可能会给少数成员带来价值。
接口兼容性:
与类别可比的接口之间以及类别与接口之间的兼容性
写法:
interface Point { x: number; y: number }
interface Point2D { x: number; y: number }
let p1: Point
let p2: Point2D = p1
interface Point3D { x: number; y: number; z: number }
let p3: Point3D
p2 = p3
类写法:
class Point3D { x: number; y: number; z: number }
let p3: Point2D = new Point3D( )
函数兼容性:
功能的兼容性很困难,必须考虑以下因素:1. 参数数; 2. 参数型号: 3. 返回值型号:
(1).参数个数:
相兼容程度较低的参数(或相兼容程度较低的参数可以提供更多的参数)
type F1 = ( a: number ) => void
type F2 = ( a: number, b: number ) => void
let f1: F1
let f2: F2 = f1
const arr = [ 'a', 'b', 'c']
arr.forEach( ( ) => { })
arr.forEach( ( item ) => { } )
解释:
第一,因为因数减少而增产,F1可增产。
2. 反响函数是阵列为每种方法的第一个参数,其类型在示例中是:(数值:文字、索引:编号、编号、编号)
array: string[] ) => void
三. 在联署材料中,删除不必要的职能论据极为普遍,这种使用方式增加了TS功能类型兼容性。
四. 因为回声函数是一个类型, TS 自动显示参数项索引, 反射类型 。
(2)参数类型:
同一地点相同的参数类型(原始类型)或兼容的参数类型(对象类型)
写法:
type F1 = ( a: number ) => string
type F2 = ( a: number ) => string
let f1: F1
let f2: F2 =f1
解释:
由于F1和F2具有相同的第一个参数类型,函数类型F2与函数类型F1兼容。
interface Point2D { x: number; y: number}
interface Point3D { x: number; y: number; z: number }
typeF2 = ( p: Point2D ) => void
typeF3 = (p: Point3D)=> void
let f2: F2
let f3: F3 = f2
f2 = f3 = f3 = f2 = f3
解释:
一. 注意这与先前指定的接口有矛盾。
2. 技术:将物体分开,将每一财产作为一个参数,这样就可以将较少的参数(f2)分配给更多参数(f3)。
上一篇:老电脑安装win10的步骤教程
下一篇:好后怎样安装苹果7p浏览器
相关新闻
- 2022-01-28 S32DS——PE调试器使用
- 2022-01-28 华硕M2N-MX SE主板如何进入bios设置
- 2022-01-28 华硕B85-A主板如何是通过bios设置u盘
- 2022-01-27 ltraISO 生成u盘启动盘后处理事项
- 2022-01-27 华硕P5QL-CM主板如何通过bios设置u盘
- 2022-01-27 微pe怎么安装原版win11 微pe安装原版
- 2022-01-26 win10 esd系统怎么用pe安装
- 2022-01-26 电脑系统装机教程图解(电脑装机
- 2022-01-25 非mbr怎么激活
- 2022-01-25 eprime安装教程
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
