鸿蒙Harmony OS Next原生开发TS的函数与类

鸿蒙初开,开天辟地

TS语法之函数

Function函数

声明函数需要定义函数的关键字,函数名称,函数体,函数体返回值,参数名称,参数类型,函数返回值类型

function sum(a:number,b:number):number{
  return a + b;
}
console.log(sum(1,2));

1+2=3

这里我们拿面向对象编程的语言JAVA做一下对比

public int sum(int a,int b){
  return a+b;
}

TS函数的特殊语法

可选参数

可以通过参数名后面的?进行标识,如gender?参数

function getPersonInfo(name:string,age:number,gender?:string):string{
	if(gender === undefined){
  	gender = '武装直升机';
  }
  return gender;
}

使用可选参数实现不传参数

可选参数在方法被调用且为传递该值时,它的默认值是undefined(此处和JS相同)

默认参数

可以在函数的参数列表为该值提供一个默认值,如果没有被赋值,就使用这个默认值

function getPersonInfo(name:string,age:number,gender:string='沃尔玛塑料袋'):string{
  return `name:${name},age:${age},gender:${gender}`;
}
console.log(getPersonInfo('哈哈',12));

使用默认参数实现初始值

联合类型

一个函数可能用于处理不同类型的值,这种情况下可以使用联合类型

function printInfo(message:string | number){
  console.log(message)
}
printInfo(123);
printInfo('性别:武装直升机');

联合类型

任意类型

一个函数有概率处理任意不同类型的值,直接用任意类型

function print(message:any){
  console.log(message);
}
print("Hello World");
print(10.1);

任意类型

注:任意类型any和联合类型还可以用来声明参数,但是不是很推荐

let mamba:any = '孩子们是我';
let kobe:string|number = '孩子们,这并不好笑';
console.log(mamba+":"+kobe);

用联合类型和任意类型来声明变量man

函数返回值

特殊类型

若函数没有返回值,则可以使用void作为返回值

function Helicopter():void{
  console.log("孩子们,这并不好笑");
}
Helicopter();

void作为返回值

类型推断

函数的返回值也可以根据return自动推断出来,也可以不写

function Helicopter(){
  console.log("孩子们,这并不好笑");
}
function mambaOut(a:number,b:number){
  return a+b;
}
Helicopter();
console.log(mambaOut(8,24));

函数返回值类型自动推断

函数声明特殊语法

匿名函数

匿名函数语法结构简单,适合一次性使用的场景

 

let numbers:number[] = [1,2,3,4,5];
numbers.forEach(function(number){
  console.log(number);
})

匿名函数

箭头函数

匿名函数可以进一步简化,只保留参数列表和函数体两个核心部分,两者用=>连接

let numbers:number[] = [1,2,3,4,5];
numbers.forEach((number)=>{console.log(number);});

箭头函数

特殊情况

我们可以把方法传递进去让它执行,但是这里不能是print(),不然就是方法的返回值传递回来了

let numbers:number[] = [1,2,3,4,5];
function print(message:any){
  console.log(message);
}
numbers.forEach(print);

箭头函数,传递方法

模板字符串

模板字符串,字符串内的值会自动取值赋值实现传递参数

function getPersonInfo(name:string,age:number,gender?:string):string{
	if(gender === undefined){
  	gender = '武装直升机';
  }
  return `name:${name},age:${age},gender:${gender}`;
}
console.log(getPersonInfo('man! what can i say?',41));

使用模板字符串让它自动取值赋值

### 关于鸿蒙开发 `onDragStart` 事件 在鸿蒙操作系统(HarmonyOS)的NEXT版本中,针对拖拽操作提供了一系列丰富的API接口来增强用户体验和功能实现。对于`onDragStart`这一特定事件而言,在拖拽动作开始时触发此函数可以自定义返回构建器或是携带额外参数的对象描述信息。 #### 使用方法开发者希望处理组件被拖动起始时刻的行为逻辑,则可以在对应的UI组件上绑定该监听器: ```typescript // 定义拖拽启动时的动作响应 component.onDragStart((event: DragEvent, extraParams?: string): CustomBuilder | DragItemInfo => { // 自定义拖拽项的信息或构造新的视图结构用于展示预览效果 }); ``` 这里需要注意的是,通过传入的第一个参数可以获得有关此次交互的具体上下文环境详情;而第二个可选参数允许传递一些附加的数据给目标接收方[^1]。 #### 示例代码 下面给出一段简单的例子来演示如何利用上述特性创建一个具有基本拖放能力的应用界面片段: ```ts import { Component } from '@ohos/arkui'; export default class MyComponent extends Component { constructor() { super(); this.draggableElement = ( <div draggable="true" ondragstart={(ev) => handleDragStart(ev)} style={{...}}> 可拖拽元素 </div> ); } function handleDragStart(event){ event.dataTransfer.setData('text/plain', '这是要传输的内容'); return new Promise(resolve => resolve({ customView: () => (<span>正在拖拽...</span>) })); } } ``` 在这个案例里,每当用户尝试移动指定区域内的对象时就会激活关联的方法执行链路,并设置好待转移的有效载荷以及可能存在的视觉反馈机制[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值