鸿蒙next开发03ArkTS语言介绍-学习
作为一个Java开发者,我也完全是一名鸿蒙开发的新手,之所以选择鸿蒙开发,还是因为Java佬已经过时,目前需要紧跟潮流,学习最新的技术,那么鸿蒙是不二之选。
今天来学习第03课,建议大家学完之后做一下习题,完成习题之后就会有一个证书颁发。因为之前我们的证书已经拿到手了。
前言
如何学习一门新的语言。根据学习Java的经验,肯定就是这一套班子。
- 了解这个语言的特性。
- 学习定义变量
- 运算符
- 条件语句
- 循环语句
- 定义函数
- 如果是面向对象语言,一定有封装继承多态。
- 进阶第二阶段,例如读取文件,网络编程,多线程等。
下面就来一起学习一下吧。
了解这个语言的特性。
这个其实没有必要花时间,既然选择了这个,就无需再纠结哪个语言更好了,PHP是世界上最好的语言又怎么样,一样要被时代所抛弃。
华为官方的介绍:
说得很全面,但是作为新手,不需要了解那么多,总结了一下:
- 在javaScript的基础上TypeScript的基础上发展而来,也就是你懂js或者ts很快就可以学会。
- 鸿蒙系统中加入了自己的底层,编译ATS的时候比TS更快(变量的类型为强类型,函数声明都比TS规范)
- 有一套ArkUI作为支撑,编写前端界面更加得心应手。
- 说完了,就这些。
学习定义变量
以关键字let开头的声明引入变量,该变量在程序执行期间可以具有不同的值
- let hi: string = 'hello';
- hi = 'hello, world';
以关键字const开头的声明引入只读常量,该常量只能被赋值一次。
- const hello: string = 'hello';
对常量重新赋值会造成编译时错误。
数据类型:
Number类型:包含了整数和浮点数
Boolean类型:boolean类型由true和false两个逻辑值组成。
String类型:string代表字符序列;可以使用转义字符来表示字符。
- let s1 = 'Hello, world!\n';
- let s2 = 'this is a string';
- let a = 'Success';
- let s3 = `The result is ${a}`;
Void类型:void类型用于指定函数没有返回值
Object类型
Object类型是所有引用类型的基类型。任何值,包括基本类型的值(它们会被自动装箱),都可以直接被赋给Object类型的变量。
Array类型
array,即数组,是由可赋值给数组声明中指定的元素类型的数据组成的对象。
Enum类型
enum类型,又称枚举类型,是预先定义的一组命名值的值类型,其中命名值又称为枚举常量。
运算符
大差不差,
比较运算符!==,==,!=,>,<,>=,<=
算术运算符一元运算符为-、+、--、++。+,-,*,/
位运算符 a & b, a | b, a ^ b
逻辑运算符 a && b , a || b , ! a
条件语句
这个是一模一样,不用学了
- if (condition1) {
- // 语句1
- } else if (condition2) {
- // 语句2
- } else {
- // else语句
- }
循环语句
比较特殊一点的for-of语句
- for (forVar of expression) {
- statements
- }
- for (let ch of 'a string object') {
- /* process ch */
- }
- let sum = 0;
- for (let i = 0; i < 10; i += 2) {
- sum += i;
- }
Break和continue没有区别了
6 ,函数的声明和使用
函数声明
函数声明引入一个函数,包含其名称、参数列表、返回类型和函数体。
以下示例是一个简单的函数,包含两个string类型的参数,返回类型为string:
- function add(x: string, y: string): string {
- let z: string = `${x} ${y}`;
- return z;
- }
在函数声明中,必须为每个参数标记类型。如果参数为可选参数,那么允许在调用函数时省略该参数。函数的最后一个参数可以是rest参数。
可选参数
可选参数的格式可为name?: Type。
- function hello(name?: string) {
- if (name == undefined) {
- console.log('Hello!');
- } else {
- console.log(`Hello, ${name}!`);
- }
- }
Rest参数
函数的最后一个参数可以是rest参数。使用rest参数时,允许函数或方法接受任意数量的实参。
- function sum(...numbers: number[]): number {
- let res = 0;
- for (let n of numbers)
- res += n;
- return res;
- }
- sum() // 返回0
- sum(1, 2, 3) // 返回6
7,封装继承多态
函数重载
- function foo(x: number): void; /* 第一个函数定义 */
- function foo(x: string): void; /* 第二个函数定义 */
- function foo(x: number | string): void { /* 函数实现 */
- }
- foo(123); // OK,使用第一个定义
- foo('aa'); // OK,使用第二个定义
类的定义
- class Person {
- name: string = ''
- age: number = 0
- constructor(n: string, a: number) {
- this.name = n;
- this.age = a;
- }
- getName(): string {
- return this.name;
- }
- }
- let p1 = new Person('Alice', 25);
- p1.name;
- let p2 = new Person('Bob', 28);
- p2.getName();
继承
- class [extends BaseClassName] [implements listOfInterfaces] {
- // ...
- }
class Person {
- name: string = ''
- private _age = 0
- get age(): number {
- return this._age;
- }
- }
- class Employee extends Person {
- salary: number = 0
- calculateTaxes(): number {
- return this.salary * 0.42;
- }
- }
包含implements子句的类必须实现列出的接口中定义的所有方法,但使用默认实现定义的方法除外。
接口
接口声明引入新类型。接口是定义代码协定的常见方式。
任何一个类的实例只要实现了特定接口,就可以通过该接口实现多态。
接口通常包含属性和方法的声明
- interface Style {
- color: string // 属性
- }
- interface AreaSize {
- calculateAreaSize(): number // 方法的声明
- someMethod(): void; // 方法的声明
- }
实现接口的类示例:
- // 接口:
- interface AreaSize {
- calculateAreaSize(): number // 方法的声明
- someMethod(): void; // 方法的声明
- }
- // 实现:
- class RectangleSize implements AreaSize {
- private width: number = 0
- private height: number = 0
- someMethod(): void {
- console.log('someMethod called');
- }
- calculateAreaSize(): number {
- this.someMethod(); // 调用另一个方法并返回结果
- return this.width * this.height;
- }
- }
总结
总体来说,如果有语言基础,学习起来还是比较简单,尤其是有Java的基础,后面的封装继承多态几乎就是一样的了,我们都知道,学习Java的时候,就是被封装继承多态搞蒙了,现在回过头来再看看arkts的这套,是不是很简单。
接下来,我们按照官方的实例,开发一个简单的基础案例出来。
关注我,下节更精彩。