arkTS基础

arkTS基础

// 变量声明
let hi: string = 'hello';
hi = 'hello,world';
// 常量声明
const hi: string =  'hello';

// ArkTS是一种静态类型语言,所有数据的类型都必须在编译时确定
// 如果一个变量或常量的声明包含了初始值,那么开发者就不需要显式指定其类型。
let h1: string = 'hello';
let h2 = 'hello';

// ArkTS提供number和Number类型,任何整数和浮点数都可以被赋给此类型的变量
let n1 = 3.14;
let n2 = 3.14159;
let n3 = .5;
let n4 = 1e2;
function factorial(n: number): number{
   
   
    if(n<1){
   
   return 1}
    return n*factorial(n-1);
}

let isDone: boolean = true
if(isDone){
   
   console.log('Done!')}

let s1 = 'hello world\n';
let s2 = 'this is a string';
let a = 'success';
let s3 = `the result is ${
     
     a}`;

// Object类型是所有引用类型的基类型。任何值,包括基本类型的值(它们会被自动装箱),都可以直接被赋给Object类型的变量。

// 数组中第一个元素的索引为0。
let name:string[] = ['Alice','Bob','Carol'];

enum ColorSet {
   
   Red ,Green ,Blue}
enum ColorSet {
   
   White=0xFF,Grey=0x7F,Black=0x00}
let c: ColorSet = ColorSet.Red;

// union类型,即联合类型,是由多个类型组合成的引用类型。
class Cat {
   
   name:string = 'cat'}
class Dog {
   
   name:string = 'dog'}
type Animal = Cat | Dog | number
let animal:Animal = new Cat();
animal = 42

// 比较运算符
===  // 严格相等
!==  // 严格不相等
==  // 操作数相等
!=  // 操作数不相等

if语句
if (condition1){
   
   }
else if (condition2){
   
   }
else (condition3) {
   
   }
// 条件表达式可以是任何类型。但是对于boolean以外的类型,会进行隐式类型转换
let s1 = 'hello'
if (s1) {
   
   console.log(s1)}

Switch语句
switch (expression){
   
   
    case label1: break;
    case label2: break;
    default: console.log('default');
}

条件表达式
condition ? expression1 : expression2
let isValid = Math.random() 
### ArkTS 基础教程和概念 #### 变量声明与数据类型 ArkTS 支持多种方式来声明变量并赋予其特定的数据类型。通过 `let` 和 `const` 关键字可以定义可变或不可变的局部变量[^1]。 ```typescript // 使用 let 定义一个可修改的变量 let age: number = 20; age = 21; // 使用 const 定义一个常量,一旦赋值则不允许更改 const name: string = 'Alice'; ``` #### 运算符 支持常见的算术运算符 (`+`, `-`, `*`, `/`)、比较运算符 (`==`, `!=`, `<`, `>`) 和逻辑运算符 (`&&`, `||`). 此外还有三元条件运算符用于简化if-else表达式. ```typescript let maxAge = (age > 30) ? "Older than thirty" : "Young"; console.log(maxAge); ``` #### 控制流语句 提供标准的选择结构如 if/else, switch-case; 循环结构有 while/do...while 和 for-loops 来实现迭代操作. ```typescript for(let i=0; i<5; ++i){ console.log(`Iteration ${i}`); } ``` #### 空安全处理 为了防止运行时错误,在访问可能为空的对象成员之前应先检查该对象是否确实存在. ```typescript function getProperty(obj?: { prop: any }) { return obj && obj.prop; } ``` #### 函数与方法 函数是一段封装好的代码块用来执行某个具体任务。可以通过参数传递输入给定的操作数,并返回计算后的结果作为输出。 方法则是绑定到类实例上的特殊类型的函数. ```typescript class Person { constructor(private firstName:string){} greet():string{ return `Hello, my name is ${this.firstName}`; } } new Person('Bob').greet(); ``` #### 类与对象 面向对象编程的核心在于创建自定义的数据结构——即类(Class),它描述了一组具有相同属性和行为的事物;而基于这些模板构建出来的实体称为对象(Object). ```typescript class Animal { private sound:string; makeSound(){ console.log(this.sound); } setSound(newSound:string):void{ this.sound=newSound; } } var dog = new Animal(); dog.setSound("Woof"); dog.makeSound(); ``` #### 接口及其与类的关系 接口是一种抽象的概念,规定了某些公共特性应该具备哪些功能签名而不涉及具体的实现细节。当一个类实现了某接口,则意味着这个类承诺会按照约定的方式去完成相应的工作. ```typescript interface Shape { area():number; } class Circle implements Shape { radius:number; constructor(radius:number){ this.radius=radius; } area():number{return Math.PI * this.radius*this.radius;} } ``` #### 泛型类型和函数 泛型允许编写能够适用于不同数据类型的通用组件。这不仅提高了代码重用率还增强了灵活性,因为相同的算法可以用在各种不同的上下文中. ```typescript function identity<T>(arg:T[]):T[]{ return arg; } identity<number>([7,8]); ``` #### 模块及导入导出 模块化设计有助于将大型程序分解成更易于管理的小部分。每个文件通常代表一个独立的功能单元,其中包含一组相互关联的函数、类或其他资源。要在一个地方使用另一个地方定义的东西就需要借助于 import/export 语法. ```typescript export class Vehicle {} import {Vehicle} from './vehicle.ts' ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值