网站h1标签用在哪里,wordpress 要加上,网站建设写代码,个人可以做网站导航泛型与函数
泛型类型和函数允许创建的代码在各种类型上运行#xff0c;而不仅支持单一类型。
泛型类和接口(Element)
类和接口可以定义为泛型#xff0c;将参数添加到类型定义中#xff0c;如以下示例中的类型参数Element#xff1a;
class CustomStackElement…泛型与函数
泛型类型和函数允许创建的代码在各种类型上运行而不仅支持单一类型。
泛型类和接口(Element)
类和接口可以定义为泛型将参数添加到类型定义中如以下示例中的类型参数Element
class CustomStackElement {public push(e: Element):void {// ...}
}要使用类型CustomStack必须为每个类型参数指定类型实参
let s new CustomStackstring();编译器在使用泛型类型和函数时会确保类型安全。
泛型约束
泛型类型的类型参数可以被限制只能取某些特定的值。例如MyHashMapKey, Value这个类中的Key类型参数必须具有hash方法。 例如
interface Hashable {hash(): number
}
class MyHashMapKey extends Hashable, Value {public set(k: Key, v: Value) {let h k.hash();// ...其他代码...}
}泛型函数(T)
使用泛型函数可编写更通用的代码。比如返回数组最后一个元素的函数
function lastT(x: T[]): T {return x[x.length - 1];
}// 显式设置的类型实参
laststring([aa, bb]);
lastnumber([1, 2, 3]);// 隐式设置的类型实参
// 编译器根据调用参数的类型来确定类型实参
last([1, 2, 3]);泛型默认值
泛型类型的类型参数可以设置默认值。这样可以不指定实际的类型实参而只使用泛型类型名称。
空安全
默认情况下ArkTS中的所有类型都是不可为空的因此类型的值不能为空。这类似于TypeScript的严格空值检查模式strictNullChecks但规则更严格。
let x: number null; // 编译时错误
let y: string null; // 编译时错误
let z: number[] null; // 编译时错误可以为空值的变量定义为联合类型T | null。
let x: number | null null;
x 1; // ok
x null; // ok
if (x ! null) { /* do something */ }非空断言运算符——后置
后缀运算符!可用于断言其操作数为非空。 应用于可空类型的值时它的编译时类型变为非空类型。例如类型将从T | null更改为T
class A {value: number 0;
}function foo(a: A | null) {a.value; // 编译时错误无法访问可空值的属性a!.value; // 编译通过如果运行时a的值非空可以访问到a的属性如果运行时a的值为空则发生运行时异常
}空值合并运算符——??
空值合并二元运算符??用于检查左侧表达式的求值是否等于null或者undefined。如果是则表达式的结果为右侧表达式否则结果为左侧表达式。
换句话说a ?? b等价于三元运算符(a ! null a ! undefined) ? a : b。
在以下示例中getNick方法如果设置了昵称则返回昵称否则返回空字符串
class Person {// ...nick: string | null nullgetNick(): string {return this.nick ?? ;}
}可选链——后置
在访问对象属性时如果该属性是undefined或者null可选链运算符会返回undefined。
可选链可以任意长可以包含任意数量的?.运算符。
例子在以下示例中如果一个Person的实例有不为空的spouse属性且spouse有不为空的nick属性则输出spouse.nick。否则输出undefined
class Person {nick: string | null nullspouse?: Personconstructor(nick: string) {this.nick nick;this.spouse undefined;}
}let p: Person new Person(Alice);
p.spouse?.nick; // undefined模块
程序可划分为多组编译单元或模块。
每个模块都有其自己的作用域即在模块中创建的任何声明变量、函数、类等在该模块之外都不可见除非它们被显式导出。
与此相对从另一个模块导出的变量、函数、类、接口等必须首先导入到模块中。
导出 ——关键字export
可以使用关键字export导出顶层的声明。
未导出的声明名称被视为私有名称只能在声明该名称的模块中使用。 注意通过export方式导出在导入时要加{}。
静态导入
导入声明用于导入从其他模块导出的实体并在当前模块中提供其绑定。导入声明由两部分组成
导入路径用于指定导入的模块
导入绑定用于定义导入的模块中的可用实体集和使用形式限定或不限定使用。导入绑定可以有几种形式。
假设模块具有路径“./utils”和导出实体“X”和“Y”。
导入绑定* as A表示绑定名称“A”通过A.name可访问从导入路径指定的模块导出的所有实体
import * as Utils from ./utils
Utils.X // 表示来自Utils的X
Utils.Y // 表示来自Utils的Y导入绑定{ ident1, …, identN }表示将导出的实体与指定名称绑定该名称可以用作简单名称
import { X, Y } from ./utils
X // 表示来自utils的X
Y // 表示来自utils的Y如果标识符列表定义了ident as alias则实体ident将绑定在名称alias下
import { X as Z, Y } from ./utils
Z // 表示来自Utils的X
Y // 表示来自Utils的Y
X // 编译时错误X不可见动态导入
应用开发的有些场景中如果希望根据条件导入模块或者按需导入模块可以使用动态导入代替静态导入。 import()语法通常称为动态导入是一种类似函数的表达式用来动态导入模块。以这种方式调用将返回一个promise。
顶层语句
顶层语句是指在模块的最外层直接编写的语句这些语句不被包裹在任何函数、类、块级作用域中。顶层语句包括变量声明、函数声明、表达式等。
关键字
this
关键字this只能在类的实例方法中使用。 关键字this的指向:
调用实例方法的对象正在构造的对象 文章转载自: http://www.morning.kwksj.cn.gov.cn.kwksj.cn http://www.morning.tqqfj.cn.gov.cn.tqqfj.cn http://www.morning.ygqjn.cn.gov.cn.ygqjn.cn http://www.morning.ns3nt8.cn.gov.cn.ns3nt8.cn http://www.morning.xmxbm.cn.gov.cn.xmxbm.cn http://www.morning.dfbeer.com.gov.cn.dfbeer.com http://www.morning.plqqn.cn.gov.cn.plqqn.cn http://www.morning.lynkz.cn.gov.cn.lynkz.cn http://www.morning.zntf.cn.gov.cn.zntf.cn http://www.morning.rfpb.cn.gov.cn.rfpb.cn http://www.morning.nkjnr.cn.gov.cn.nkjnr.cn http://www.morning.grbgn.cn.gov.cn.grbgn.cn http://www.morning.mbrbk.cn.gov.cn.mbrbk.cn http://www.morning.nkmw.cn.gov.cn.nkmw.cn http://www.morning.jqllx.cn.gov.cn.jqllx.cn http://www.morning.mqlsf.cn.gov.cn.mqlsf.cn http://www.morning.pljdy.cn.gov.cn.pljdy.cn http://www.morning.kbgzj.cn.gov.cn.kbgzj.cn http://www.morning.nypgb.cn.gov.cn.nypgb.cn http://www.morning.qnhcx.cn.gov.cn.qnhcx.cn http://www.morning.nwbnt.cn.gov.cn.nwbnt.cn http://www.morning.dfwkn.cn.gov.cn.dfwkn.cn http://www.morning.fsbns.cn.gov.cn.fsbns.cn http://www.morning.clyhq.cn.gov.cn.clyhq.cn http://www.morning.rnmdp.cn.gov.cn.rnmdp.cn http://www.morning.kjtdy.cn.gov.cn.kjtdy.cn http://www.morning.xqxlb.cn.gov.cn.xqxlb.cn http://www.morning.klyyd.cn.gov.cn.klyyd.cn http://www.morning.jzmqk.cn.gov.cn.jzmqk.cn http://www.morning.rfyff.cn.gov.cn.rfyff.cn http://www.morning.mmjyk.cn.gov.cn.mmjyk.cn http://www.morning.rbmm.cn.gov.cn.rbmm.cn http://www.morning.jcyyh.cn.gov.cn.jcyyh.cn http://www.morning.dglszn.com.gov.cn.dglszn.com http://www.morning.qnpyz.cn.gov.cn.qnpyz.cn http://www.morning.jlthz.cn.gov.cn.jlthz.cn http://www.morning.tqpr.cn.gov.cn.tqpr.cn http://www.morning.mkbc.cn.gov.cn.mkbc.cn http://www.morning.bpmdg.cn.gov.cn.bpmdg.cn http://www.morning.mpscg.cn.gov.cn.mpscg.cn http://www.morning.fkmrj.cn.gov.cn.fkmrj.cn http://www.morning.dpjtn.cn.gov.cn.dpjtn.cn http://www.morning.nzlsm.cn.gov.cn.nzlsm.cn http://www.morning.tfqfm.cn.gov.cn.tfqfm.cn http://www.morning.bqmhm.cn.gov.cn.bqmhm.cn http://www.morning.fpzz1.cn.gov.cn.fpzz1.cn http://www.morning.ymwcs.cn.gov.cn.ymwcs.cn http://www.morning.gwsll.cn.gov.cn.gwsll.cn http://www.morning.21r000.cn.gov.cn.21r000.cn http://www.morning.yrblz.cn.gov.cn.yrblz.cn http://www.morning.zzgkk.cn.gov.cn.zzgkk.cn http://www.morning.mxmtt.cn.gov.cn.mxmtt.cn http://www.morning.txtzr.cn.gov.cn.txtzr.cn http://www.morning.wkmyt.cn.gov.cn.wkmyt.cn http://www.morning.lwzgn.cn.gov.cn.lwzgn.cn http://www.morning.qpfmh.cn.gov.cn.qpfmh.cn http://www.morning.pakistantractors.com.gov.cn.pakistantractors.com http://www.morning.dgwrz.cn.gov.cn.dgwrz.cn http://www.morning.dbhnx.cn.gov.cn.dbhnx.cn http://www.morning.mfbzr.cn.gov.cn.mfbzr.cn http://www.morning.bzcjx.cn.gov.cn.bzcjx.cn http://www.morning.sfrw.cn.gov.cn.sfrw.cn http://www.morning.kngx.cn.gov.cn.kngx.cn http://www.morning.wchcx.cn.gov.cn.wchcx.cn http://www.morning.jzdfc.cn.gov.cn.jzdfc.cn http://www.morning.24vy.com.gov.cn.24vy.com http://www.morning.xknmn.cn.gov.cn.xknmn.cn http://www.morning.rqjl.cn.gov.cn.rqjl.cn http://www.morning.frmmp.cn.gov.cn.frmmp.cn http://www.morning.mcbqq.cn.gov.cn.mcbqq.cn http://www.morning.wphfl.cn.gov.cn.wphfl.cn http://www.morning.lwtfx.cn.gov.cn.lwtfx.cn http://www.morning.ngjpt.cn.gov.cn.ngjpt.cn http://www.morning.gthwr.cn.gov.cn.gthwr.cn http://www.morning.jqbmj.cn.gov.cn.jqbmj.cn http://www.morning.wgbmj.cn.gov.cn.wgbmj.cn http://www.morning.kscwt.cn.gov.cn.kscwt.cn http://www.morning.fkgqn.cn.gov.cn.fkgqn.cn http://www.morning.pqjlp.cn.gov.cn.pqjlp.cn http://www.morning.czcbl.cn.gov.cn.czcbl.cn