18c339a94Sopenharmony_ci/* 28c339a94Sopenharmony_ci* Copyright (c) 2022 Shenzhen Kaihong Digital Industry Development Co., Ltd. 38c339a94Sopenharmony_ci* Licensed under the Apache License, Version 2.0 (the "License"); 48c339a94Sopenharmony_ci* you may not use this file except in compliance with the License. 58c339a94Sopenharmony_ci* You may obtain a copy of the License at 68c339a94Sopenharmony_ci* 78c339a94Sopenharmony_ci* http://www.apache.org/licenses/LICENSE-2.0 88c339a94Sopenharmony_ci* 98c339a94Sopenharmony_ci* Unless required by applicable law or agreed to in writing, software 108c339a94Sopenharmony_ci* distributed under the License is distributed on an "AS IS" BASIS, 118c339a94Sopenharmony_ci* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 128c339a94Sopenharmony_ci* See the License for the specific language governing permissions and 138c339a94Sopenharmony_ci* limitations under the License. 148c339a94Sopenharmony_ci*/ 158c339a94Sopenharmony_ciimport { AsyncCallback, Callback } from './../basic'; 168c339a94Sopenharmony_ci 178c339a94Sopenharmony_cideclare namespace napitest { 188c339a94Sopenharmony_ci export class Image { 198c339a94Sopenharmony_ci width: number; 208c339a94Sopenharmony_ci height: number; 218c339a94Sopenharmony_ci toDataURL(type?: string, quality?: number): string; 228c339a94Sopenharmony_ci } 238c339a94Sopenharmony_ci 248c339a94Sopenharmony_ci export class Human { 258c339a94Sopenharmony_ci name: string; 268c339a94Sopenharmony_ci age: number; 278c339a94Sopenharmony_ci } 288c339a94Sopenharmony_ci 298c339a94Sopenharmony_ci // 变换括号位置 308c339a94Sopenharmony_ci class Man 318c339a94Sopenharmony_ci { 328c339a94Sopenharmony_ci name: string; 338c339a94Sopenharmony_ci age: number; 348c339a94Sopenharmony_ci } 358c339a94Sopenharmony_ci 368c339a94Sopenharmony_ci // 有参构造函数的转换,成员变量包含数值型枚举 378c339a94Sopenharmony_ci export class Woman { 388c339a94Sopenharmony_ci constructor(name_: string, age_: number, isMarried_: boolean, status_: TestStatus); 398c339a94Sopenharmony_ci w_name: string; 408c339a94Sopenharmony_ci w_age: number; 418c339a94Sopenharmony_ci w_isMarried: boolean; 428c339a94Sopenharmony_ci w_status: TestStatus; 438c339a94Sopenharmony_ci } 448c339a94Sopenharmony_ci 458c339a94Sopenharmony_ci // 有参构造函数的转换,成员变量包含字符型枚举 468c339a94Sopenharmony_ci export class Child { 478c339a94Sopenharmony_ci constructor(name_: string, age_: number, status_: TestEnumString); 488c339a94Sopenharmony_ci w_name: string; 498c339a94Sopenharmony_ci w_age: number; 508c339a94Sopenharmony_ci w_status: TestEnumString; 518c339a94Sopenharmony_ci } 528c339a94Sopenharmony_ci 538c339a94Sopenharmony_ci export enum LaunchReason { 548c339a94Sopenharmony_ci UNKNOWN = 0, 558c339a94Sopenharmony_ci START_ABILITY = 1, 568c339a94Sopenharmony_ci CALL = 2, 578c339a94Sopenharmony_ci CONTINUATION = 3, 588c339a94Sopenharmony_ci } 598c339a94Sopenharmony_ci 608c339a94Sopenharmony_ci export class TestClass1 { 618c339a94Sopenharmony_ci ahuman: Human; 628c339a94Sopenharmony_ci fun1(v: number): number; 638c339a94Sopenharmony_ci fun2(numcc: Array<number>, mancc: Human): Human; 648c339a94Sopenharmony_ci fun3: (v: number, v1: string, v2: boolean) => boolean; 658c339a94Sopenharmony_ci fun4: (mancc: Map<string, string>,v?: string) => Array<number>; 668c339a94Sopenharmony_ci fun5: (data: Array<Human>) => Human; 678c339a94Sopenharmony_ci fun6: (v: string[], v1: { [key: string]: boolean }) => string[]; 688c339a94Sopenharmony_ci fun8: () => void; 698c339a94Sopenharmony_ci fun9(manA: Man): string; 708c339a94Sopenharmony_ci fun10(v: Image): string; 718c339a94Sopenharmony_ci 728c339a94Sopenharmony_ci //参数为enum 738c339a94Sopenharmony_ci fun11(v: LaunchReason): string; 748c339a94Sopenharmony_ci fun12(v: TestStatus): string; 758c339a94Sopenharmony_ci fun13(v: TestEnumString): string; 768c339a94Sopenharmony_ci 778c339a94Sopenharmony_ci // return value is enum type of defined later 788c339a94Sopenharmony_ci // to support 798c339a94Sopenharmony_ci // fun14(v: string): ReturnStatus; 808c339a94Sopenharmony_ci // fun15(v: string): ReturnEnumString; 818c339a94Sopenharmony_ci 828c339a94Sopenharmony_ci /*fun7: (v: string, v1: LaunchReason) => LaunchReason; --待支持*/ 838c339a94Sopenharmony_ci } 848c339a94Sopenharmony_ci 858c339a94Sopenharmony_ci // class 定义在使用之后 begin 868c339a94Sopenharmony_ci function func4(v: TestClassLater): string; 878c339a94Sopenharmony_ci 888c339a94Sopenharmony_ci export class TestClassUse { 898c339a94Sopenharmony_ci v0: string; 908c339a94Sopenharmony_ci // v1: testClassLater; 918c339a94Sopenharmony_ci funceUse(n0: TestClassLater): string; 928c339a94Sopenharmony_ci } 938c339a94Sopenharmony_ci 948c339a94Sopenharmony_ci export class TestClassLater { 958c339a94Sopenharmony_ci v0: string; 968c339a94Sopenharmony_ci v1: number; 978c339a94Sopenharmony_ci funcLater(n0: number): string; 988c339a94Sopenharmony_ci } 998c339a94Sopenharmony_ci // class 定义在使用之后 end 1008c339a94Sopenharmony_ci 1018c339a94Sopenharmony_ci // 数值型枚举 1028c339a94Sopenharmony_ci export enum TestStatus { 1038c339a94Sopenharmony_ci UNKNOWN = 0, 1048c339a94Sopenharmony_ci START_ABILITY = 1, 1058c339a94Sopenharmony_ci CALL = 2, 1068c339a94Sopenharmony_ci CONTINUATION = 3, 1078c339a94Sopenharmony_ci } 1088c339a94Sopenharmony_ci 1098c339a94Sopenharmony_ci // 字符型枚举 1108c339a94Sopenharmony_ci export enum TestEnumString { 1118c339a94Sopenharmony_ci ACTION_HOME = 'ohos.want.action.home', 1128c339a94Sopenharmony_ci ACTION_DIAL = 'ohos.want.action.dial', 1138c339a94Sopenharmony_ci ACTION_SEARCH = 'ohos.want.action.search', 1148c339a94Sopenharmony_ci ACTION_WIRELESS_SETTINGS = 'ohos.settings.wireless', 1158c339a94Sopenharmony_ci } 1168c339a94Sopenharmony_ci 1178c339a94Sopenharmony_ci // 数值型枚举 1188c339a94Sopenharmony_ci export enum ReturnStatus { 1198c339a94Sopenharmony_ci UNKNOWN = 0, 1208c339a94Sopenharmony_ci START_RETURN = 1, 1218c339a94Sopenharmony_ci MIDDLE_RETURN = 2, 1228c339a94Sopenharmony_ci END_RETURN = 3, 1238c339a94Sopenharmony_ci } 1248c339a94Sopenharmony_ci 1258c339a94Sopenharmony_ci // 字符型枚举 1268c339a94Sopenharmony_ci export enum ReturnEnumString { 1278c339a94Sopenharmony_ci RETURN_HOME = 'ohos.want.return.home', 1288c339a94Sopenharmony_ci RETURN_DIAL = 'ohos.want.return.dial', 1298c339a94Sopenharmony_ci RETURN_SEARCH = 'ohos.want.return.search', 1308c339a94Sopenharmony_ci RETURN_WIRELESS_SETTINGS = 'ohos.settings.return.wireless', 1318c339a94Sopenharmony_ci } 1328c339a94Sopenharmony_ci 1338c339a94Sopenharmony_ci export class TestClass2 { 1348c339a94Sopenharmony_ci // 函数多参数非嵌套场景 1358c339a94Sopenharmony_ci func1(name : string, fp3: {nm: string, age: number, flag: boolean}): string; 1368c339a94Sopenharmony_ci 1378c339a94Sopenharmony_ci // 函数返回值场景 1388c339a94Sopenharmony_ci func2(input: string): { read: number; written: number; flag: boolean }; 1398c339a94Sopenharmony_ci 1408c339a94Sopenharmony_ci // Promise返回值逗号场景 1418c339a94Sopenharmony_ci func3(from: string, to: string): Promise<{result: number, errMsg: string, isT: boolean}>; 1428c339a94Sopenharmony_ci 1438c339a94Sopenharmony_ci // Promise返回值分号场景 1448c339a94Sopenharmony_ci func4(from: string, to: string): Promise<{result: number; errMsg: string; isT: boolean}>; 1458c339a94Sopenharmony_ci 1468c339a94Sopenharmony_ci // class成员方法隐式推导返回值 1478c339a94Sopenharmony_ci func5(v1: string, v2: number, v3: boolean); 1488c339a94Sopenharmony_ci } 1498c339a94Sopenharmony_ci 1508c339a94Sopenharmony_ci // class 成员变量包含enum类型,且class成员方法自引用 1518c339a94Sopenharmony_ci export enum Type 1528c339a94Sopenharmony_ci { 1538c339a94Sopenharmony_ci typeA, 1548c339a94Sopenharmony_ci typeB, 1558c339a94Sopenharmony_ci typeC 1568c339a94Sopenharmony_ci } 1578c339a94Sopenharmony_ci 1588c339a94Sopenharmony_ci export class Test { 1598c339a94Sopenharmony_ci type: Type; 1608c339a94Sopenharmony_ci func(param: Type): boolean; 1618c339a94Sopenharmony_ci } 1628c339a94Sopenharmony_ci 1638c339a94Sopenharmony_ci export interface aa { 1648c339a94Sopenharmony_ci abc: string; 1658c339a94Sopenharmony_ci def: number; 1668c339a94Sopenharmony_ci } 1678c339a94Sopenharmony_ci 1688c339a94Sopenharmony_ci export class Demo { 1698c339a94Sopenharmony_ci equals(other: Demo): boolean; 1708c339a94Sopenharmony_ci handleCallback(): void; 1718c339a94Sopenharmony_ci 1728c339a94Sopenharmony_ci intPro: number; 1738c339a94Sopenharmony_ci strPro: string; 1748c339a94Sopenharmony_ci boolPro: boolean; 1758c339a94Sopenharmony_ci inter: aa; 1768c339a94Sopenharmony_ci type: Type; 1778c339a94Sopenharmony_ci } 1788c339a94Sopenharmony_ci 1798c339a94Sopenharmony_ci function funcTest(v: Type): boolean; // enum为参数 1808c339a94Sopenharmony_ci function funcTest2(v: Test): boolean; // 包含enum成员变量的 class 为参数 1818c339a94Sopenharmony_ci} 1828c339a94Sopenharmony_ci 1838c339a94Sopenharmony_ciexport default napitest; 184