04-ArkTS语言_基础语法之变量声明+数据类型
基础语法之变量声明+数据类型
- js:JavaScript
- ts:TypeScript
- ets: extend TypeScript
变量名要求:
- 变量名称可以包含数字和字母。
- 变量名不能以数字开头。
- 除了下划线 _ 和美元 $ 符号外,不能包含其他特殊字符,包括空格。
- 不能使用关键字和保留字(已经定义了特殊含义的单词)
- 见名知意
🍞 变量可以先声明后赋值,也可以声明的时候直接赋值(初始化)
数据类型
TypeScript支持一些基础的数据类型,如布尔型、数组、字符串等
数字
TypeScript里的所有数字都是浮点数,这些浮点数的类型是 number。除了支持十进制,还支持二进制、八进制、十六进制。
// 数值类型
let num1: number = 18 //十进制
let num2: number = 0b10011 //ob 二进制
let num3: number = 0o1234567 // 0o 八进制
let num4: number = 0x123abcdef //0x 十六进制
字符串
TypeScript里使用 string表示文本数据类型, 可以使用双引号(")或单引号(')表示字符串或者反引号(`)。
反引号中可以配合${}解析变量
// 字符串类型
let str1: string = 'HarmonyOS4.0'
let str2: string = "ArkTS"
let str3: string = `圆周率:${num1}` //tab上方飘号键盘...
布尔值
TypeScript中可以使用boolean
来表示这个变量是布尔值,可以赋值为true
或者false
。
// 布尔类型 true false
let stateOn: boolean = true
let stateOff: boolean = false
联合类型
联合类型(Union Types)表示取值可以为多种类型中的一种。
如果当下还没想好用哪个类型…
// 如果当下还没想好用哪个类型..
let meiXiangHao: string | number |boolean
meiXiangHao = 'seven'
meiXiangHao = 7
meiXiangHao = true
数组 Array
TypeScrip有两种方式可以定义数组。
数组是有索引值的,索引值从0开始。
第一种方式是使用数组泛型,Array<元素类型>。
// 数组
let course1: Array<string> = ['入门',"基础语法",`组件`]
第二种,可以在元素类型后面接上 [],表示由此类型元素组成的一个数组。
let course2: string[] = ['动画',"网络",`存储`]
枚举
enum类型是对JavaScript标准数据类型的一个补充,使用枚举类型可以为一组数值赋予友好的名字。
// 定义枚举
enum Color {Red, Green, Blue};
// 使用枚举
let c: Color = Color.Green;
元组
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。 比如,你可以定义一对值分别为 string
和number
类型的元组。
let x: [string, number];
x = ['hello', 10]; // OK
x = [10, 'hello']; // Error,会报错
Unknown
有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。那么我们可以使用unknown
类型来标记这些变量。(同any
)
let notSure: unknown = 4;
notSure = 'maybe a string instead';
notSure = false;
Void
当一个函数没有返回值时,你通常会见到其返回值类型是 void
。
function test(): void {
console.log('This is function is void');
}
Null 和 Undefined
TypeScript里,undefined
和null
两者各自有自己的类型分别叫做undefined
和null
。
let u: undefined = undefined;
let n: null = null;
数据类型应用
// 数值类型
let num1: number = 3.1415
let num2: number = 0b10100
let num3: number = 0o107
let num4: number = 0x012abcf
let num5: number = 10+ 5
// 字符串
let str1:string = 'HarmonyOS' + "ArkTS"
let str2:string = "HarmonyOS"
let str3:string = `圆周率:${num1}`
// 布尔boolean
let stateOn: boolean = true
let stateOff: boolean = false
// 数组 Array 索引值0
let names1:string[] = ['小明','李华']
let names2:Array<string> = ['小明','李华']
// 枚举类型
enum myColor{
Red = 'red',
Green ='green'
}
@Entry
@Component
struct DataType {
// 在组件内部声明,不要+ let
pome:string = '劝君莫惜金缕衣 劝君惜取少年时'
build() {
Row() {
Column() {
Text(names1[1])
.fontSize(50)
.fontWeight(FontWeight.Bold)
.fontColor(myColor.Red)
Divider()
if (stateOff){
Text(num1.toString())
.fontSize(50)
.fontWeight(FontWeight.Bold)
}else{
Text(num2.toString())
.fontSize(50)
.fontWeight(FontWeight.Bold)
}
Divider()
Text(this.pome)
}
.width('100%')
}
.height('100%')
}
}