ArKTs 数据类型
基本数据类型
1.数字
let b:number = 20; // ts写法 ;类型声明 大小写无所谓 ;
let c:Number = 30;
c = 40; // 和之前类型一致 可以赋值
// c = "hello";
let a: number = 0 //整数
let b: number = -100 //负数
let c: number = 88.88 //小数
let d: number = 0b1010 //二进制 ES6
let e: number = 0o744 //八进制 ES6
2.字符串 ( let a:string = "hello";)
//带默认值
let singleQuotes: string = '单引号字符串'
let doubleQuotes: string = "双引号字符串"
//类型推断后省略类型写法
let singleQuotes = '单引号字符串'
let doubleQuotes = "双引号字符串"
//不带默认值
let singleQuotes: string
let doubleQuotes: string
3.布尔值 (let b:boolean = true;)
//带默认值
let isBoolean: boolean = false
//类型推断后省略类型写法
let isBoolean = false
//不带默认值
let isBoolean: boolean
4.undefined 未定义或不存在的值 ( let a:undefined = undefined;)
当你定义了一个变量而未赋值时,那么它就是undefined。
let test
console.log(typeof test)
let test
//用undefined 判断某个数据是否有值,
if (test != undefined) {
console.log("有值")
} else {
console.log("无值")
}
5.null ( let a:null = null;)
null是一个表示"空值"的对象,通常用来表示变量的值为“没有值”,如果需要明确表示一个变量的值为空,就可以使用 null。
let test=null
null和undefined进行比较
1、null 表示对象为空,而 undefined 表示缺少值。
2、声明变量但未赋值时,变量的值为 undefined,当需要表示空值时,可以使用 null。
3、在比较时,null 和 undefined 的值相等,但数据类型不同。
6.bigInt (let B:bigint= BigInt(100);)
ArkTs中可以用 Number 表示的最大整数为 2^53 - 1,可以写为 Number.MAX_SAFE_INTEGER,但是如果超过了这个界限,可以用 BigInt来表示,它可以表示任意大的整数,使用BigInt,整数溢出的问题将不复存在。
let bigint = BigInt('9999999999999')
7.void : 一般用于函数的返还值
当一个函数没有返回值时,你通常会见到其返回值类型是 void。
function test(): void {
console.log('This is function is void');
}
8.never: 函数抛出错误的时候使用
never类型一般是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型,
function fn(a:string,b:string):never{
throw new Error("错嘞");
}
复杂数据类型
1.普通对象
在ArkTs中,不管你是一个普通的对象,还是一个数组,元组,集合等等,都是一个对象类型。
和其他语言的声明及使用方式基本一致,可以对其变量私有,通过get/set方法进行获取,也有私有和公共关键字。
使用方式:
export class Test {
name: string="lr"
age: number=1234
}
2.数组
TypeScrip有两种方式可以定义数组。 数组是有索引值的,索引值从0开始。 第一种方式是使用数组泛型,Array<元素类型>
let course1: Array<string> = ['入门',"基础语法",`组件`]
第二种,可以在元素类型后面接上 [],表示由此类型元素组成的一个数组
let arr = [1, 2, 3, 4, 5]
let course1: Array<string> = ['入门',"基础语法",`组件`]
let array = Array<number>(1, 2, 3, 4, 5)
数组如果没声明类型,它是可以并存多种类型数据的,如下所示:
interface info{
an1:number
an2:string
an3:boolean
}
let array2 : Array<info>=[{an1:1, an2:"字符串",an3:true}]
3、元组
如果存储的元素数据类型不同,则需要使用元组,元组中允许存储不同类型的元素,元组可以作为参数传递给函数。
元祖 类型 :类似数组 : 元祖:[string,boolean,number] = [数组];
let arr:[string,number,boolean] = ["hello",123,true];
let tuple = ["AbnerMing", 10]
console.log("key:" + tuple[0])
console.log("value:" + tuple[1])
4.正则表达式
let reg:object = /^a\s+c$/;
console.log(reg);
5.函数
let tn:object = () => {
console.log("hello");
}
函数的命名方式
函数的参数和返回值需要类型
function tn1(a:string,b:number){
console.log(a+b);
}
tn1("hello",123);
默认参数:
function sn(a:string="hello",b:number=1){
console.log(a+b);
}
sn()
可选参数;
function sn1(n1:string,t1?:boolean){
//bb加上一个+就是可能有可能没有,就是可选参数
console.log(n1);
console.log(t1);
}
sn1("245",);
剩余参数
// 剩余参数
function tfn(n:string,s:number,...args:Array<string>){
console.log(n,s,args)
}
tfn("ert",2,"aa","134");
对于函数的返还值类型声明 ;
//无返回值声明为void
function tnex(a:number,b:number):void{
// return a+b;
}
tnex(12,34);
//有返回值 声明返回值类型
function ts(a:number,b:string):string{
console.log(a+b);
return a+b;
}
ts("ert","394");
匿名函数
const fnt = (a: string, b: string): void => {
console.log(a + b);
}
fnt("aa","bb");
箭头函数
const fns = (a:string,b:string):string=>a+b;
fns("er","24")
枚举类型
目前在ArkTs中只提供了基于数字和基于字符串的枚举,使用enum关键字定义枚举。
export enum EnumTest {
ONE,
TWO,
THREE,
FOUR,
}
在字符串枚举中,每个成员都必须使用字符串字面或另一个字符串枚举成员进行常量初始化。
export enum EnumTest {
ONE = "ONE",
TWO = "TWO",
THREE = "THREE",
FOUR = "FOUR",
}
直接给键名 ,值是数字 从0开始累加 ;
enum sex{
man,
woman,
c,
d,
e
}
let zhangsan:sex = sex.d;
console.log(zhangsan);
中间给值 ,后面的值 会累加
enum nums{
a = 3,
b,
c,
d
}
直接给键值 ,值就是键值
enum Color{
red="red",
blue = "blue",
yellow = "yellow"
}
let bg:Color = Color.red;
let bg2:Color = Color.yellow;
联合数据类型 ;
联合类型(Union Types)表示取值可以为多种类型中的一种。
// 联合数据类型
let a:string | number = 10;
a = "hello";
let meiXiangHao: string | number |boolean
meiXiangHao = 'seven'
meiXiangHao = 7
meiXiangHao = true
自定义类型 :
type mytype = number | string | boolean | undefined ;
let a:mytype = 10;
let b:mytype = "hello"
let c:mytype = true;
type colors = "red" | "blue" | "yellow";
let aty:colors = "red";
let buo:colors = "blue";
let ccv:colors = "yellow";
type sex = "男" | "女" | "未知";
let zhangsan:sex = "男";
-
类似枚举
type sex = "男" | "女" | "未知";
let zhangsan:sex = "男";
更多推荐



所有评论(0)