index.uts 1.9 KB
Newer Older
DCloud_iOS_XHY's avatar
DCloud_iOS_XHY 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
import { log } from "./utils.uts";
type AsyncOptions = {
  type: string;
  success: (res: string) => void;
  fail: (res: string) => void;
  complete: (res: string) => void;
};
/**
 * 导出一个属性
 */
export const MAX = 100;

/**
 * 导出一个同步方法
 * @returns
 */
export function testSync(msg: string) {
  console.log("log test");
  log("log test1");
  return {
    msg: `hello ${msg}`,
  };
}
/**
 * 导出一个同步方法(触发了数组越界异常)
 */
export function testSyncError() {
  const arr: string[] = [];
  console.log(arr[1]);
}
/**
 * 导出一个带callback的同步方法
 * @param opts
 */
export function testSyncWithCallback(opts: AsyncOptions) {
  if (opts.type == "success") {
    opts.success("success");
  } else {
    opts.fail("fail");
  }
  opts.complete("complete");
  return { name: "testSyncWithCallback" };
}
/**
 * 导出一个异步方法
 * @returns
 */
export async function testAsync(opts: AsyncOptions) {
  if (opts.type == "success") {
    opts.success("success");
  } else {
    opts.fail("fail");
  }
  opts.complete("complete");
  return { name: "testAsync" };
}

type TestOptions = {
  name: string;
  callback: (res: string) => void;
};

export class Test {
  id: number;
  name: string;
  static type: string = "Test";
  constructor(id: number, options: TestOptions) {
    this.id = id;
    this.name = options.name;
    options.callback("Test.constructor");
  }
  static testClassStaticSyncWithCallback(opts: AsyncOptions): UTSJSONObject {
    return testSyncWithCallback(opts);
  }
  static async testClassStaticAsync(opts: AsyncOptions): Promise<UTSJSONObject> {
    const res = await testAsync(opts);
    return res;
  }
  testClassSyncWithCallback(opts: AsyncOptions): UTSJSONObject {
    return testSyncWithCallback(opts);
  }
  async testClassAsync(opts: AsyncOptions): Promise<UTSJSONObject> {
    const res = await testAsync(opts);
    return res;
  }
}