From 0aa1380a29fe58e5d96a8d07a9eac3153db2c695 Mon Sep 17 00:00:00 2001 From: asfasdff Date: Thu, 20 Jan 2022 15:18:56 +0800 Subject: [PATCH 01/14] add sample Signed-off-by: asfasdff --- Util/eTSUtilTypeCheck/README_zh.md | 15 + Util/eTSUtilTypeCheck/build.gradle | 34 ++ Util/eTSUtilTypeCheck/entry/build.gradle | 21 ++ .../entry/src/main/config.json | 67 ++++ .../entry/src/main/ets/MainAbility/app.ets | 23 ++ .../src/main/ets/MainAbility/common/check.ets | 293 ++++++++++++++++++ .../src/main/ets/MainAbility/common/show.ets | 46 +++ .../src/main/ets/MainAbility/pages/index.ets | 61 ++++ .../main/resources/base/element/string.json | 28 ++ .../src/main/resources/base/media/icon.png | Bin 0 -> 6790 bytes .../src/main/resources/en/element/string.json | 28 ++ .../src/main/resources/zh/element/string.json | 28 ++ .../screenhots/devices/main.png | Bin 0 -> 39102 bytes Util/eTSUtilTypeCheck/settings.gradle | 1 + 14 files changed, 645 insertions(+) create mode 100644 Util/eTSUtilTypeCheck/README_zh.md create mode 100644 Util/eTSUtilTypeCheck/build.gradle create mode 100644 Util/eTSUtilTypeCheck/entry/build.gradle create mode 100644 Util/eTSUtilTypeCheck/entry/src/main/config.json create mode 100644 Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/app.ets create mode 100644 Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/check.ets create mode 100644 Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets create mode 100644 Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets create mode 100644 Util/eTSUtilTypeCheck/entry/src/main/resources/base/element/string.json create mode 100644 Util/eTSUtilTypeCheck/entry/src/main/resources/base/media/icon.png create mode 100644 Util/eTSUtilTypeCheck/entry/src/main/resources/en/element/string.json create mode 100644 Util/eTSUtilTypeCheck/entry/src/main/resources/zh/element/string.json create mode 100644 Util/eTSUtilTypeCheck/screenhots/devices/main.png create mode 100644 Util/eTSUtilTypeCheck/settings.gradle diff --git a/Util/eTSUtilTypeCheck/README_zh.md b/Util/eTSUtilTypeCheck/README_zh.md new file mode 100644 index 0000000000..c198958c8d --- /dev/null +++ b/Util/eTSUtilTypeCheck/README_zh.md @@ -0,0 +1,15 @@ +# util工具函数-类型校验 + +## 简介 + +本示例通过对给定值进行校验,判断是否符合Type类型,并输出校验结果。 + +### 使用说明 + +1.点击显示预置值按钮,将会显示预置值。 + +2.点击校验预置值按钮,将会对预置值进行校验,并输出校验结果。 + +### 约束与限制 + +本示例仅支持在标准系统上运行。 \ No newline at end of file diff --git a/Util/eTSUtilTypeCheck/build.gradle b/Util/eTSUtilTypeCheck/build.gradle new file mode 100644 index 0000000000..f350f30a90 --- /dev/null +++ b/Util/eTSUtilTypeCheck/build.gradle @@ -0,0 +1,34 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +apply plugin: 'com.huawei.ohos.app' + +//For instructions on signature configuration, see https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_device-0000001053822404#section1112183053510 +ohos { + compileSdkVersion 8 + supportSystem "standard" +} + +buildscript { + repositories { + maven { + url 'https://repo.huaweicloud.com/repository/maven/' + } + maven { + url 'https://developer.huawei.com/repo/' + } + } + dependencies { + classpath 'com.huawei.ohos:hap:3.0.5.2' + classpath 'com.huawei.ohos:decctest:1.2.7.2' + } +} + +allprojects { + repositories { + maven { + url 'https://repo.huaweicloud.com/repository/maven/' + } + maven { + url 'https://developer.huawei.com/repo/' + } + } +} diff --git a/Util/eTSUtilTypeCheck/entry/build.gradle b/Util/eTSUtilTypeCheck/entry/build.gradle new file mode 100644 index 0000000000..05a33cd3ad --- /dev/null +++ b/Util/eTSUtilTypeCheck/entry/build.gradle @@ -0,0 +1,21 @@ +apply plugin: 'com.huawei.ohos.hap' +//For instructions on signature configuration, see https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_device-0000001053822404#section1112183053510 +ohos { + compileSdkVersion 8 + defaultConfig { + compatibleSdkVersion 8 + } + buildTypes { + release { + proguardOpt { + proguardEnabled false + rulesFiles 'proguard-rules.pro' + } + } + } +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar', '*.har']) + testImplementation 'junit:junit:4.13.1' +} diff --git a/Util/eTSUtilTypeCheck/entry/src/main/config.json b/Util/eTSUtilTypeCheck/entry/src/main/config.json new file mode 100644 index 0000000000..8d3b68879e --- /dev/null +++ b/Util/eTSUtilTypeCheck/entry/src/main/config.json @@ -0,0 +1,67 @@ +{ + "app": { + "bundleName": "com.samples.etsutiltypecheck", + "vendor": "samples", + "version": { + "code": 1000000, + "name": "1.0.0" + } + }, + "deviceConfig": {}, + "module": { + "package": "com.samples.etsutiltypecheck", + "name": ".MyApplication", + "mainAbility": ".MainAbility", + "srcPath": "", + "deviceType": [ + "phone" + ], + "distro": { + "deliveryWithInstall": true, + "moduleName": "entry", + "moduleType": "entry", + "installationFree": false + }, + "abilities": [ + { + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ], + "orientation": "unspecified", + "visible": true, + "srcPath": "MainAbility", + "name": ".MainAbility", + "srcLanguage": "ets", + "icon": "$media:icon", + "description": "$string:description_mainability", + "formsEnabled": false, + "label": "$string:entry_MainAbility", + "type": "page", + "launchType": "standard" + } + ], + "js": [ + { + "mode": { + "syntax": "ets", + "type": "pageAbility" + }, + "pages": [ + "pages/index" + ], + "name": ".MainAbility", + "window": { + "designWidth": 720, + "autoDesignWidth": false + } + } + ] + } +} \ No newline at end of file diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/app.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/app.ets new file mode 100644 index 0000000000..bf28e58b36 --- /dev/null +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/app.ets @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export default { + onCreate() { + console.info('Application onCreate') + }, + onDestroy() { + console.info('Application onDestroy') + }, +} \ No newline at end of file diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/check.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/check.ets new file mode 100644 index 0000000000..44495c1438 --- /dev/null +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/check.ets @@ -0,0 +1,293 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import util from '@ohos.util' + +let numberVal = new Number (55) +let booleanVal = new Boolean (true) +let stringVal = new String ('sdsddadas') +let arrayBuffer = new ArrayBuffer(8) + +@Component +export struct checkType { + @Link output: string + + check() { + let that = new util.Types() + let result: Boolean + try { + result = that.isAnyArrayBuffer(arrayBuffer) + if (result == true) { + console.log("Success, arrayBuffer this value is ArrayBuffer") + this.output = 'Success, arrayBuffer this value is ArrayBuffer.\n' + } else if (result == false) { + console.log("Success, arrayBuffer this value not is ArrayBuffer.") + this.output = 'Success, arrayBuffer this value not is ArrayBuffer.\n' + } else { + console.log("Error!") + } + + result = that.isArgumentsObject(arrayBuffer) + if (result == true) { + console.log('Success, arrayBuffer this value is arguments.\n') + this.output = `${this.output}Success, arrayBuffer this value is arguments.\n` + } else if (result == false) { + console.log('Success, arrayBuffer this value not is arguments.\n') + this.output = `${this.output}Success, arrayBuffer this value not is arguments.\n` + } else { + console.log('Error!') + } + + result = that.isAsyncFunction(arrayBuffer) + if (result == true) { + console.log('Success, arrayBuffer this value is AsyncFunction.\n') + this.output = `${this.output}Success, arrayBuffer this value is AsyncFunction.\n` + } else if (result == false) { + console.log('Success, arrayBuffer this value not is AsyncFunction.\n') + this.output = `${this.output}Success, arrayBuffer this value not is AsyncFunction.\n` + } else { + console.log('Error!') + } + + result = that.isBooleanObject(booleanVal) + if (result == true) { + console.log('Success, boolean_value this value is Boolean.\n') + this.output = `${this.output}Success, boolean_value this value is Boolean.\n` + } else if (result == false) { + console.log('Success, boolean_value this value not is Boolean.\n') + this.output = `${this.output}Success, boolean_value this value not is Boolean.\n` + } else { + console.log('Error!') + } + + result = that.isDataView(arrayBuffer) + if (result == true) { + console.log('Success, arrayBuffer this value is DataView.\n') + this.output = `${this.output}Success, arrayBuffer this value is DataView.\n` + } else if (result == false) { + console.log('Success, arrayBuffer this value not is DataView.\n') + this.output = `${this.output}Success, arrayBuffer this value not is DataView.\n` + } else { + console.log('Error!') + } + + result = that.isDate(arrayBuffer) + if (result == true) { + console.log('Success, arrayBuffer this value is Date.\n') + this.output = `${this.output}Success, arrayBuffer this value is Date.\n` + } else if (result == false) { + console.log('Success, arrayBuffer this value not is Date.\n') + this.output = `${this.output}Success, arrayBuffer this value not is Date.\n` + } else { + console.log('Error!') + } + + result = that.isExternal(arrayBuffer) + if (result == true) { + console.log('Success, arrayBuffer this value is native External.\n') + this.output = `${this.output}Success, arrayBuffer this value is native External.\n` + } else if (result == false) { + console.log('Success, arrayBuffer this value not is native External.\n') + this.output = `${this.output}Success, arrayBuffer this value not is native External.\n` + } else { + console.log('Error!') + } + + result = that.isFloat32Array(arrayBuffer) + if (result == true) { + console.log('Success, arrayBuffer this value is Float32Array.\n') + this.output = `${this.output}Success, arrayBuffer this value is Float32Array.\n` + } else if (result == false) { + console.log('Success, arrayBuffer this value not is Float32Array.\n') + this.output = `${this.output}Success, arrayBuffer this value is Float32Array.\n` + } else { + console.log('Error!') + } + + result = that.isGeneratorFunction(arrayBuffer) + if (result == true) { + console.log('Success, arrayBuffer this value is generator.\n') + this.output = `${this.output}Success, arrayBuffer this value is generator.\n` + } else if (result == false) { + console.log('Success, arrayBuffer this value not is generator.\n') + this.output = `${this.output}Success, arrayBuffer this value not is generator.\n` + } else { + console.log('Error!') + } + + result = that.isInt8Array(arrayBuffer) + if (result == true) { + console.log('Success, arrayBuffer this value is Int8Array.\n') + this.output = `${this.output}Success, arrayBuffer this value is Int8Array.\n` + } else if (result == false) { + console.log('Success, arrayBuffer this value not is Int8Array.\n') + this.output = `${this.output}Success, arrayBuffer this value not is Int8Array.\n` + } else { + console.log('Error!') + } + + result = that.isMap(arrayBuffer) + if (result == true) { + console.log('Success, arrayBuffer this value is Map.\n') + this.output = `${this.output}Success, arrayBuffer this value is Map.\n` + } else if (result == false) { + console.log('Success, arrayBuffer this value not is Map.\n') + this.output = `${this.output}Success, arrayBuffer this value not is Map.\n` + } else { + console.log('Error!') + } + + result = that.isNativeError(arrayBuffer) + if (result == true) { + console.log('Success, arrayBuffer this value is Error.\n') + this.output = `${this.output}Success, arrayBuffer this value is Error.\n` + } else if (result == false) { + console.log('Success, arrayBuffer this value not is Error.\n') + this.output = `${this.output}Success, arrayBuffer this value not is Error.\n` + } else { + console.log('Error!') + } + + result = that.isNumberObject(numberVal) + if (result == true) { + console.log('Success, number_value this value is Number.\n') + this.output = `${this.output}Success, number_value this value is Number.\n` + } else if (result == false) { + console.log('Success, number_value this value not is Number.\n') + this.output = `${this.output}Success, number_value this value not is Number.\n` + } else { + console.log('Error!') + } + + result = that.isPromise(arrayBuffer) + if (result == true) { + console.log('Success, arrayBuffer this value is Promise.\n') + this.output = `${this.output}Success, arrayBuffer this value is Promise.\n` + } else if (result == false) { + console.log('Success, arrayBuffer this value not is Promise.\n') + this.output = `${this.output}Success, arrayBuffer this value not is Promise.\n` + } else { + console.log('Error!') + } + + result = that.isProxy(arrayBuffer) + if (result == true) { + console.log('Success, arrayBuffer this value is Proxy.\n') + this.output = `${this.output}Success, arrayBuffer this value is Proxy.\n` + } else if (result == false) { + console.log('Success, arrayBuffer this value not is Proxy.\n') + this.output = `${this.output}Success, arrayBuffer this value not is Proxy.\n` + } else { + console.log('Error!') + } + + result = that.isRegExp(arrayBuffer) + if (result == true) { + console.log('Success, arrayBuffer this value is RegExp.\n') + this.output = `${this.output}Success, arrayBuffer this value is RegExp.\n` + } else if (result == false) { + console.log('Success, arrayBuffer this value not is RegExp.\n') + this.output = `${this.output}Success, arrayBuffer this value not is RegExp.\n` + } else { + console.log('Error!') + } + + result = that.isSet(arrayBuffer) + if (result == true) { + console.log('Success, arrayBuffer this value is Set.\n') + this.output = `${this.output}Success, arrayBuffer this value is Set.\n` + } else if (result == false) { + console.log('Success, arrayBuffer this value not is Set.\n') + this.output = `${this.output}Success, arrayBuffer this value not is Set.\n` + } else { + console.log('Error!') + } + + result = that.isStringObject(stringVal) + if (result == true) { + console.log('Success, string_value this value is String.\n') + this.output = `${this.output}Success, string_value this value is String.\n` + } else if (result == false) { + console.log('Success, string_value this value not is String.\n') + this.output = `${this.output}Success, string_value this value not is String.\n` + } else { + console.log('Error!') + } + + result = that.isSymbolObject(arrayBuffer) + if (result == true) { + console.log('Success, arrayBuffer this value is Symbol.\n') + this.output = `${this.output}Success, arrayBuffer this value is Symbol.\n` + } else if (result == false) { + console.log('Success, arrayBuffer this value not is Symbol.\n') + this.output = `${this.output}Success, arrayBuffer this value not is Symbol.\n` + } else { + console.log('Error!') + } + + result = that.isUint8Array(arrayBuffer) + if (result == true) { + console.log('Success, arrayBuffer this value is Uint8Array.\n') + this.output = `${this.output}Success, arrayBuffer this value is Uint8Array.\n` + } else if (result == false) { + console.log('Success, arrayBuffer this value not is Uint8Array.\n') + this.output = `${this.output}Success, arrayBuffer this value not is Uint8Array.\n` + } else { + console.log('Error!') + } + + result = that.isWeakMap(arrayBuffer) + if (result == true) { + console.log('Success, arrayBuffer this value is WeakMap.\n') + this.output = `${this.output}Success, arrayBuffer this value is WeakMap.\n` + } else if (result == false) { + console.log('Success, arrayBuffer this value not is WeakMap.\n') + this.output = `${this.output}Success, arrayBuffer this value not is WeakMap.\n` + } else { + console.log('Error!') + } + + result = that.isWeakSet(arrayBuffer) + if (result == true) { + console.log('Success, arrayBuffer this value is WeakSet.\n') + this.output = `${this.output}Success, arrayBuffer this value is WeakSet.` + } else if (result == false) { + console.log('Success, arrayBuffer this value not is WeakSet.\n') + this.output = `${this.output}Success, arrayBuffer this value not is WeakSet.` + } else { + console.log('Error!') + } + } catch (e) { + console.log('error' + e) + } + } + + build() { + Button() { + Text($r("app.string.check")) + .fontColor(Color.Black) + .fontSize(20) + .textAlign(TextAlign.Center) + .width('85%') + } + .type(ButtonType.Capsule) + .backgroundColor('#0D9FFB') + .padding(5) + .margin({ top: 10 }) + .onClick(() => { + this.check() + }) + } +} \ No newline at end of file diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets new file mode 100644 index 0000000000..cda0fe71c6 --- /dev/null +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +let arrayBuffer = new ArrayBuffer(8) +let int8View = new Int8Array(arrayBuffer) +for(let k = 0; k < Int8Array.length; ++k) { + Int8Array[k] = k; +} + +@Component +export struct showKey { + @State showArrary: string = ' ' + @Link input: string + @Link output: string + + build() { + Button() { + Text($r("app.string.show")) + .fontColor(Color.Black) + .fontSize(20) + .textAlign(TextAlign.Center) + .width('85%') + } + .type(ButtonType.Capsule) + .backgroundColor('#0D9FFB') + .padding(5) + .margin({ top: 10 }) + .onClick(() => { + this.showArrary = this.input + this.showArrary = 'numberVal = 55\nstringVal = sdsddadas\nbooleanVal = true\narrayBuffer =' + int8View + this.output = this.showArrary + }) + } +} \ No newline at end of file diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets new file mode 100644 index 0000000000..bd73a2731a --- /dev/null +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { showKey } from '../common/show.ets' +import { checkType } from '../common/check.ets' + +@Entry +@Component +struct Index { + @State output: string = ' ' + @State input: string = ' ' + + build() { + Column() { + Text($r('app.string.title')) + .textAlign(TextAlign.Center) + .width('100%') + .height('5%') + .backgroundColor('#008bdd') + .fontSize(25) + .fontColor(Color.Black) + .fontWeight(FontWeight.Bold) + + Scroll() { + Column() { + Text(this.output) + .width('90%') + .height('65%') + .fontSize(15) + .padding({ left: 5, right: 5}) + .margin({ left: 10, right: 10, top: 10, bottom: 10 }) + .border({ width: 2, radius: 5, color: Color.Gray }) + } + } + + Flex({ + direction: FlexDirection.Row, + alignItems: ItemAlign.Center, + justifyContent: FlexAlign.Center, + wrap: FlexWrap.Wrap + }) { + showKey({ output: $output, input: $input}) + checkType({ output: $output}) + } + } + .width('100%') + .height('100%') + } +} diff --git a/Util/eTSUtilTypeCheck/entry/src/main/resources/base/element/string.json b/Util/eTSUtilTypeCheck/entry/src/main/resources/base/element/string.json new file mode 100644 index 0000000000..b96d2514d5 --- /dev/null +++ b/Util/eTSUtilTypeCheck/entry/src/main/resources/base/element/string.json @@ -0,0 +1,28 @@ +{ + "string": [ + { + "name": "entry_MainAbility", + "value": "UtilTypeCheck" + }, + { + "name": "description_mainability", + "value": "eTS_Empty Ability" + }, + { + "name": "title", + "value": "Check input value" + }, + { + "name": "text", + "value": "confirm" + }, + { + "name": "show", + "value": "Display preset value" + }, + { + "name": "check", + "value": "Check preset value" + } + ] +} \ No newline at end of file diff --git a/Util/eTSUtilTypeCheck/entry/src/main/resources/base/media/icon.png b/Util/eTSUtilTypeCheck/entry/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c GIT binary patch literal 6790 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 KtU%mJ+p=Y literal 0 HcmV?d00001 diff --git a/Util/eTSUtilTypeCheck/settings.gradle b/Util/eTSUtilTypeCheck/settings.gradle new file mode 100644 index 0000000000..4773db7323 --- /dev/null +++ b/Util/eTSUtilTypeCheck/settings.gradle @@ -0,0 +1 @@ +include ':entry' -- Gitee From 67ba9b6d5b17c743a4eb6af683df8fef44a78e57 Mon Sep 17 00:00:00 2001 From: asfasdff Date: Thu, 20 Jan 2022 17:27:16 +0800 Subject: [PATCH 02/14] fix up Signed-off-by: asfasdff --- .../src/main/ets/MainAbility/common/check.ets | 324 +++++------------- .../src/main/ets/MainAbility/pages/index.ets | 4 +- 2 files changed, 79 insertions(+), 249 deletions(-) diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/check.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/check.ets index 44495c1438..b02680bab5 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/check.ets +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/check.ets @@ -19,259 +19,89 @@ let numberVal = new Number (55) let booleanVal = new Boolean (true) let stringVal = new String ('sdsddadas') let arrayBuffer = new ArrayBuffer(8) +let int8View = new Int8Array(arrayBuffer) + +for(let k = 0; k < Int8Array.length; k++) { + Int8Array[k] = k; +} @Component export struct checkType { @Link output: string - check() { + check(value) { let that = new util.Types() - let result: Boolean - try { - result = that.isAnyArrayBuffer(arrayBuffer) - if (result == true) { - console.log("Success, arrayBuffer this value is ArrayBuffer") - this.output = 'Success, arrayBuffer this value is ArrayBuffer.\n' - } else if (result == false) { - console.log("Success, arrayBuffer this value not is ArrayBuffer.") - this.output = 'Success, arrayBuffer this value not is ArrayBuffer.\n' - } else { - console.log("Error!") - } - - result = that.isArgumentsObject(arrayBuffer) - if (result == true) { - console.log('Success, arrayBuffer this value is arguments.\n') - this.output = `${this.output}Success, arrayBuffer this value is arguments.\n` - } else if (result == false) { - console.log('Success, arrayBuffer this value not is arguments.\n') - this.output = `${this.output}Success, arrayBuffer this value not is arguments.\n` - } else { - console.log('Error!') - } - - result = that.isAsyncFunction(arrayBuffer) - if (result == true) { - console.log('Success, arrayBuffer this value is AsyncFunction.\n') - this.output = `${this.output}Success, arrayBuffer this value is AsyncFunction.\n` - } else if (result == false) { - console.log('Success, arrayBuffer this value not is AsyncFunction.\n') - this.output = `${this.output}Success, arrayBuffer this value not is AsyncFunction.\n` - } else { - console.log('Error!') - } - - result = that.isBooleanObject(booleanVal) - if (result == true) { - console.log('Success, boolean_value this value is Boolean.\n') - this.output = `${this.output}Success, boolean_value this value is Boolean.\n` - } else if (result == false) { - console.log('Success, boolean_value this value not is Boolean.\n') - this.output = `${this.output}Success, boolean_value this value not is Boolean.\n` - } else { - console.log('Error!') - } - - result = that.isDataView(arrayBuffer) - if (result == true) { - console.log('Success, arrayBuffer this value is DataView.\n') - this.output = `${this.output}Success, arrayBuffer this value is DataView.\n` - } else if (result == false) { - console.log('Success, arrayBuffer this value not is DataView.\n') - this.output = `${this.output}Success, arrayBuffer this value not is DataView.\n` - } else { - console.log('Error!') - } - - result = that.isDate(arrayBuffer) - if (result == true) { - console.log('Success, arrayBuffer this value is Date.\n') - this.output = `${this.output}Success, arrayBuffer this value is Date.\n` - } else if (result == false) { - console.log('Success, arrayBuffer this value not is Date.\n') - this.output = `${this.output}Success, arrayBuffer this value not is Date.\n` - } else { - console.log('Error!') - } - - result = that.isExternal(arrayBuffer) - if (result == true) { - console.log('Success, arrayBuffer this value is native External.\n') - this.output = `${this.output}Success, arrayBuffer this value is native External.\n` - } else if (result == false) { - console.log('Success, arrayBuffer this value not is native External.\n') - this.output = `${this.output}Success, arrayBuffer this value not is native External.\n` - } else { - console.log('Error!') - } - - result = that.isFloat32Array(arrayBuffer) - if (result == true) { - console.log('Success, arrayBuffer this value is Float32Array.\n') - this.output = `${this.output}Success, arrayBuffer this value is Float32Array.\n` - } else if (result == false) { - console.log('Success, arrayBuffer this value not is Float32Array.\n') - this.output = `${this.output}Success, arrayBuffer this value is Float32Array.\n` - } else { - console.log('Error!') - } - - result = that.isGeneratorFunction(arrayBuffer) - if (result == true) { - console.log('Success, arrayBuffer this value is generator.\n') - this.output = `${this.output}Success, arrayBuffer this value is generator.\n` - } else if (result == false) { - console.log('Success, arrayBuffer this value not is generator.\n') - this.output = `${this.output}Success, arrayBuffer this value not is generator.\n` - } else { - console.log('Error!') - } - - result = that.isInt8Array(arrayBuffer) - if (result == true) { - console.log('Success, arrayBuffer this value is Int8Array.\n') - this.output = `${this.output}Success, arrayBuffer this value is Int8Array.\n` - } else if (result == false) { - console.log('Success, arrayBuffer this value not is Int8Array.\n') - this.output = `${this.output}Success, arrayBuffer this value not is Int8Array.\n` - } else { - console.log('Error!') - } - - result = that.isMap(arrayBuffer) - if (result == true) { - console.log('Success, arrayBuffer this value is Map.\n') - this.output = `${this.output}Success, arrayBuffer this value is Map.\n` - } else if (result == false) { - console.log('Success, arrayBuffer this value not is Map.\n') - this.output = `${this.output}Success, arrayBuffer this value not is Map.\n` - } else { - console.log('Error!') - } - - result = that.isNativeError(arrayBuffer) - if (result == true) { - console.log('Success, arrayBuffer this value is Error.\n') - this.output = `${this.output}Success, arrayBuffer this value is Error.\n` - } else if (result == false) { - console.log('Success, arrayBuffer this value not is Error.\n') - this.output = `${this.output}Success, arrayBuffer this value not is Error.\n` - } else { - console.log('Error!') - } - - result = that.isNumberObject(numberVal) - if (result == true) { - console.log('Success, number_value this value is Number.\n') - this.output = `${this.output}Success, number_value this value is Number.\n` - } else if (result == false) { - console.log('Success, number_value this value not is Number.\n') - this.output = `${this.output}Success, number_value this value not is Number.\n` - } else { - console.log('Error!') - } - - result = that.isPromise(arrayBuffer) - if (result == true) { - console.log('Success, arrayBuffer this value is Promise.\n') - this.output = `${this.output}Success, arrayBuffer this value is Promise.\n` - } else if (result == false) { - console.log('Success, arrayBuffer this value not is Promise.\n') - this.output = `${this.output}Success, arrayBuffer this value not is Promise.\n` - } else { - console.log('Error!') - } - - result = that.isProxy(arrayBuffer) - if (result == true) { - console.log('Success, arrayBuffer this value is Proxy.\n') - this.output = `${this.output}Success, arrayBuffer this value is Proxy.\n` - } else if (result == false) { - console.log('Success, arrayBuffer this value not is Proxy.\n') - this.output = `${this.output}Success, arrayBuffer this value not is Proxy.\n` - } else { - console.log('Error!') - } - - result = that.isRegExp(arrayBuffer) - if (result == true) { - console.log('Success, arrayBuffer this value is RegExp.\n') - this.output = `${this.output}Success, arrayBuffer this value is RegExp.\n` - } else if (result == false) { - console.log('Success, arrayBuffer this value not is RegExp.\n') - this.output = `${this.output}Success, arrayBuffer this value not is RegExp.\n` - } else { - console.log('Error!') - } - - result = that.isSet(arrayBuffer) - if (result == true) { - console.log('Success, arrayBuffer this value is Set.\n') - this.output = `${this.output}Success, arrayBuffer this value is Set.\n` - } else if (result == false) { - console.log('Success, arrayBuffer this value not is Set.\n') - this.output = `${this.output}Success, arrayBuffer this value not is Set.\n` - } else { - console.log('Error!') - } - - result = that.isStringObject(stringVal) - if (result == true) { - console.log('Success, string_value this value is String.\n') - this.output = `${this.output}Success, string_value this value is String.\n` - } else if (result == false) { - console.log('Success, string_value this value not is String.\n') - this.output = `${this.output}Success, string_value this value not is String.\n` - } else { - console.log('Error!') - } - - result = that.isSymbolObject(arrayBuffer) - if (result == true) { - console.log('Success, arrayBuffer this value is Symbol.\n') - this.output = `${this.output}Success, arrayBuffer this value is Symbol.\n` - } else if (result == false) { - console.log('Success, arrayBuffer this value not is Symbol.\n') - this.output = `${this.output}Success, arrayBuffer this value not is Symbol.\n` - } else { - console.log('Error!') - } - - result = that.isUint8Array(arrayBuffer) - if (result == true) { - console.log('Success, arrayBuffer this value is Uint8Array.\n') - this.output = `${this.output}Success, arrayBuffer this value is Uint8Array.\n` - } else if (result == false) { - console.log('Success, arrayBuffer this value not is Uint8Array.\n') - this.output = `${this.output}Success, arrayBuffer this value not is Uint8Array.\n` - } else { - console.log('Error!') - } - - result = that.isWeakMap(arrayBuffer) - if (result == true) { - console.log('Success, arrayBuffer this value is WeakMap.\n') - this.output = `${this.output}Success, arrayBuffer this value is WeakMap.\n` - } else if (result == false) { - console.log('Success, arrayBuffer this value not is WeakMap.\n') - this.output = `${this.output}Success, arrayBuffer this value not is WeakMap.\n` - } else { - console.log('Error!') - } - - result = that.isWeakSet(arrayBuffer) - if (result == true) { - console.log('Success, arrayBuffer this value is WeakSet.\n') - this.output = `${this.output}Success, arrayBuffer this value is WeakSet.` - } else if (result == false) { - console.log('Success, arrayBuffer this value not is WeakSet.\n') - this.output = `${this.output}Success, arrayBuffer this value not is WeakSet.` - } else { - console.log('Error!') - } - } catch (e) { - console.log('error' + e) + if (that.isAnyArrayBuffer(value)) { + return 'ArrayBuffer' } + if (that.isArgumentsObject(value)) { + return 'arguments' + } + if (that.isAsyncFunction(value)) { + return 'AsyncFunction' + } + if (that.isBooleanObject(value)) { + return 'Boolean' + } + if (that.isDataView(value)) { + return 'DataView' + } + if (that.isDate(value)) { + return 'Date' + } + if (that.isExternal(value)) { + return 'External' + } + if (that.isFloat32Array(value)) { + return 'Float32Array' + } + if (that.isGeneratorFunction(value)) { + return 'generator' + } + if (that.isInt8Array(value)) { + return 'Int8Array' + } + if (that.isMap(value)) { + return 'Map' + } + if (that.isNativeError(value)) { + return 'Error' + } + if (that.isNumberObject(value)) { + return 'Number' + } + if (that.isPromise(value)) { + return 'Promise' + } + if (that.isRegExp(value)) { + return 'RegExp' + } + if (that.isSet(value)) { + return 'Set' + } + if (that.isStringObject(value)) { + return 'String' + } + if (that.isSymbolObject(value)) { + return 'Symbol' + } + if (that.isWeakMap(value)) { + return 'WeakMap' + } + if (that.isUint8Array(value)) { + return 'Uint8Array' + } + if (that.isWeakSet(value)) { + return 'WeakSet' + } + return undefined + } + + show() { + this.output = `${numberVal} check success, this value type is ${this.check(numberVal)}.\n` + +`${stringVal} check success, this value type is ${this.check(stringVal)}.\n` + +`${booleanVal} check success, this value type is ${this.check(booleanVal)}.\n` + +`${int8View} check success, this value type is ${this.check(int8View)}.\n` } build() { @@ -287,7 +117,7 @@ export struct checkType { .padding(5) .margin({ top: 10 }) .onClick(() => { - this.check() + this.show() }) } } \ No newline at end of file diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets index bd73a2731a..d14b5692da 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets @@ -35,10 +35,10 @@ struct Index { Scroll() { Column() { - Text(this.output) + Text(this.output) .width('90%') .height('65%') - .fontSize(15) + .fontSize(20) .padding({ left: 5, right: 5}) .margin({ left: 10, right: 10, top: 10, bottom: 10 }) .border({ width: 2, radius: 5, color: Color.Gray }) -- Gitee From 59436cd688cabc7beb5548287d6a998785cc12de Mon Sep 17 00:00:00 2001 From: asfasdff Date: Fri, 21 Jan 2022 18:26:51 +0800 Subject: [PATCH 03/14] fix up Signed-off-by: asfasdff --- .../entry/src/main/ets/MainAbility/common/show.ets | 2 -- .../entry/src/main/ets/MainAbility/pages/index.ets | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets index cda0fe71c6..e90ad451f8 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets @@ -22,7 +22,6 @@ for(let k = 0; k < Int8Array.length; ++k) { @Component export struct showKey { @State showArrary: string = ' ' - @Link input: string @Link output: string build() { @@ -38,7 +37,6 @@ export struct showKey { .padding(5) .margin({ top: 10 }) .onClick(() => { - this.showArrary = this.input this.showArrary = 'numberVal = 55\nstringVal = sdsddadas\nbooleanVal = true\narrayBuffer =' + int8View this.output = this.showArrary }) diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets index d14b5692da..89bcbc2121 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets @@ -51,7 +51,7 @@ struct Index { justifyContent: FlexAlign.Center, wrap: FlexWrap.Wrap }) { - showKey({ output: $output, input: $input}) + showKey({ output: $output}) checkType({ output: $output}) } } -- Gitee From bf5d63c051e87a41b46421793e5d3478cb1d0675 Mon Sep 17 00:00:00 2001 From: asfasdff Date: Fri, 21 Jan 2022 18:30:11 +0800 Subject: [PATCH 04/14] fis up Signed-off-by: asfasdff --- .../entry/src/main/ets/MainAbility/pages/index.ets | 1 - 1 file changed, 1 deletion(-) diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets index 89bcbc2121..59dbdead6b 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets @@ -20,7 +20,6 @@ import { checkType } from '../common/check.ets' @Component struct Index { @State output: string = ' ' - @State input: string = ' ' build() { Column() { -- Gitee From d5737f8fc56a649944e4911caa37737340a6097b Mon Sep 17 00:00:00 2001 From: asfasdff Date: Tue, 25 Jan 2022 10:53:55 +0800 Subject: [PATCH 05/14] fix up Signed-off-by: asfasdff --- .../src/main/ets/MainAbility/common/check.ets | 93 ++++++------------- 1 file changed, 29 insertions(+), 64 deletions(-) diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/check.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/check.ets index b02680bab5..843566b9ea 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/check.ets +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/check.ets @@ -27,74 +27,39 @@ for(let k = 0; k < Int8Array.length; k++) { @Component export struct checkType { + @State result:string = ' ' @Link output: string check(value) { let that = new util.Types() - if (that.isAnyArrayBuffer(value)) { - return 'ArrayBuffer' - } - if (that.isArgumentsObject(value)) { - return 'arguments' - } - if (that.isAsyncFunction(value)) { - return 'AsyncFunction' - } - if (that.isBooleanObject(value)) { - return 'Boolean' - } - if (that.isDataView(value)) { - return 'DataView' - } - if (that.isDate(value)) { - return 'Date' - } - if (that.isExternal(value)) { - return 'External' - } - if (that.isFloat32Array(value)) { - return 'Float32Array' - } - if (that.isGeneratorFunction(value)) { - return 'generator' - } - if (that.isInt8Array(value)) { - return 'Int8Array' - } - if (that.isMap(value)) { - return 'Map' - } - if (that.isNativeError(value)) { - return 'Error' - } - if (that.isNumberObject(value)) { - return 'Number' - } - if (that.isPromise(value)) { - return 'Promise' - } - if (that.isRegExp(value)) { - return 'RegExp' - } - if (that.isSet(value)) { - return 'Set' - } - if (that.isStringObject(value)) { - return 'String' - } - if (that.isSymbolObject(value)) { - return 'Symbol' - } - if (that.isWeakMap(value)) { - return 'WeakMap' - } - if (that.isUint8Array(value)) { - return 'Uint8Array' - } - if (that.isWeakSet(value)) { - return 'WeakSet' - } - return undefined + let map = new Map() + map.set('ArrayBuffer', that.isAnyArrayBuffer(value)) + map.set('arguments', that.isArgumentsObject(value)) + map.set('AsyncFunction', that.isAsyncFunction(value)) + map.set('Boolean', that.isBooleanObject(value)) + map.set('DataView', that.isDataView(value)) + map.set('External', that.isExternal(value)) + map.set('Float32Array', that.isFloat32Array(value)) + map.set('generator', that.isGeneratorFunction(value)) + map.set('Int8Array', that.isInt8Array(value)) + map.set('Map', that.isMap(value)) + map.set('Error', that.isNativeError(value)) + map.set('Number', that.isNumberObject(value)) + map.set('Promise', that.isPromise(value)) + map.set('RegExp', that.isRegExp(value)) + map.set('Set', that.isSet(value)) + map.set('String', that.isStringObject(value)) + map.set('Symbol', that.isSymbolObject(value)) + map.set('WeakMap', that.isWeakMap(value)) + map.set('Uint8Array', that.isUint8Array(value)) + map.set('WeakSet', that.isWeakSet(value)) + for(let [key, value] of map) { + if(value == true) { + this.result = key + break + } + } + return this.result } show() { -- Gitee From a9705a2f8c2ad6501c6765cc757cc56cb4b9bf8d Mon Sep 17 00:00:00 2001 From: asfasdff Date: Tue, 25 Jan 2022 11:35:20 +0800 Subject: [PATCH 06/14] fix up Signed-off-by: asfasdff --- .../entry/src/main/ets/MainAbility/common/show.ets | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets index e90ad451f8..f727aa3c30 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets @@ -21,7 +21,6 @@ for(let k = 0; k < Int8Array.length; ++k) { @Component export struct showKey { - @State showArrary: string = ' ' @Link output: string build() { @@ -37,8 +36,7 @@ export struct showKey { .padding(5) .margin({ top: 10 }) .onClick(() => { - this.showArrary = 'numberVal = 55\nstringVal = sdsddadas\nbooleanVal = true\narrayBuffer =' + int8View - this.output = this.showArrary + this.output = 'numberVal = 55\nstringVal = sdsddadas\nbooleanVal = true\narrayBuffer =' + int8View }) } } \ No newline at end of file -- Gitee From ac33c7f6c81b5b480442dc06f10ac74846ab64bb Mon Sep 17 00:00:00 2001 From: asfasdff Date: Tue, 25 Jan 2022 11:58:19 +0800 Subject: [PATCH 07/14] fix up Signed-off-by: asfasdff --- .../entry/src/main/ets/MainAbility/common/show.ets | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets index f727aa3c30..73182e9ddc 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets @@ -13,14 +13,19 @@ * limitations under the License. */ +let numberVal = new Number (55) +let booleanVal = new Boolean (true) +let stringVal = new String ('sdsddadas') let arrayBuffer = new ArrayBuffer(8) let int8View = new Int8Array(arrayBuffer) for(let k = 0; k < Int8Array.length; ++k) { Int8Array[k] = k; } + @Component export struct showKey { + @State result: string = ' ' @Link output: string build() { @@ -36,7 +41,10 @@ export struct showKey { .padding(5) .margin({ top: 10 }) .onClick(() => { - this.output = 'numberVal = 55\nstringVal = sdsddadas\nbooleanVal = true\narrayBuffer =' + int8View + this.output = `numberVal = ${numberVal}\n` + +`stringVal = ${stringVal}\n` + +`booleanVal = ${booleanVal}\n` + +`arrayBuffer = ${int8View}` }) } } \ No newline at end of file -- Gitee From 8e798d1b0eaa9eab500ddcd5ea7bd021952df297 Mon Sep 17 00:00:00 2001 From: asfasdff Date: Tue, 25 Jan 2022 14:08:05 +0800 Subject: [PATCH 08/14] fix up Signed-off-by: asfasdff --- .../entry/src/main/ets/MainAbility/pages/index.ets | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets index 59dbdead6b..8d714b9cd2 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets @@ -13,8 +13,8 @@ * limitations under the License. */ -import { showKey } from '../common/show.ets' -import { checkType } from '../common/check.ets' +import { ShowKey } from '../common/show.ets' +import { CheckKey } from '../common/check.ets' @Entry @Component -- Gitee From b42dccc75940d44d6041c19cff83f4a6bf54e3a6 Mon Sep 17 00:00:00 2001 From: asfasdff Date: Tue, 25 Jan 2022 14:11:37 +0800 Subject: [PATCH 09/14] fix up Signed-off-by: asfasdff --- Util/eTSUtilTypeCheck/entry/build.gradle | 2 +- .../entry/src/main/ets/MainAbility/common/check.ets | 2 +- .../entry/src/main/ets/MainAbility/common/show.ets | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Util/eTSUtilTypeCheck/entry/build.gradle b/Util/eTSUtilTypeCheck/entry/build.gradle index 05a33cd3ad..cef7b37de8 100644 --- a/Util/eTSUtilTypeCheck/entry/build.gradle +++ b/Util/eTSUtilTypeCheck/entry/build.gradle @@ -3,7 +3,7 @@ apply plugin: 'com.huawei.ohos.hap' ohos { compileSdkVersion 8 defaultConfig { - compatibleSdkVersion 8 + compatibleSdkVersion 7 } buildTypes { release { diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/check.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/check.ets index 843566b9ea..8e56ccaa87 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/check.ets +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/check.ets @@ -26,7 +26,7 @@ for(let k = 0; k < Int8Array.length; k++) { } @Component -export struct checkType { +export struct CheckType { @State result:string = ' ' @Link output: string diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets index 73182e9ddc..12cf96187a 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets @@ -24,7 +24,7 @@ for(let k = 0; k < Int8Array.length; ++k) { @Component -export struct showKey { +export struct ShowKey { @State result: string = ' ' @Link output: string -- Gitee From 5611d9a7803ce12a5969e1319e9e8bdf869bafd2 Mon Sep 17 00:00:00 2001 From: asfasdff Date: Tue, 25 Jan 2022 17:32:23 +0800 Subject: [PATCH 10/14] fix up Signed-off-by: asfasdff --- .../common/{check.ets => checkType.ets} | 71 ++++++++---------- .../common/{show.ets => showKey.ets} | 21 ++---- .../src/main/ets/MainAbility/pages/index.ets | 65 ++++++++-------- .../main/resources/base/element/string.json | 6 +- .../src/main/resources/en/element/string.json | 6 +- .../src/main/resources/zh/element/string.json | 6 +- .../screenhots/devices/main.png | Bin 39102 -> 25927 bytes 7 files changed, 76 insertions(+), 99 deletions(-) rename Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/{check.ets => checkType.ets} (39%) rename Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/{show.ets => showKey.ets} (69%) diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/check.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/checkType.ets similarity index 39% rename from Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/check.ets rename to Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/checkType.ets index 8e56ccaa87..ec61e44cf5 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/check.ets +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/checkType.ets @@ -15,46 +15,37 @@ import util from '@ohos.util' -let numberVal = new Number (55) -let booleanVal = new Boolean (true) -let stringVal = new String ('sdsddadas') -let arrayBuffer = new ArrayBuffer(8) -let int8View = new Int8Array(arrayBuffer) - -for(let k = 0; k < Int8Array.length; k++) { - Int8Array[k] = k; -} - @Component export struct CheckType { - @State result:string = ' ' - @Link output: string + @State result: string = ' ' + @Link checkResult: string + @Link presetValue: Array check(value) { - let that = new util.Types() + let utilType = new util.Types() let map = new Map() - map.set('ArrayBuffer', that.isAnyArrayBuffer(value)) - map.set('arguments', that.isArgumentsObject(value)) - map.set('AsyncFunction', that.isAsyncFunction(value)) - map.set('Boolean', that.isBooleanObject(value)) - map.set('DataView', that.isDataView(value)) - map.set('External', that.isExternal(value)) - map.set('Float32Array', that.isFloat32Array(value)) - map.set('generator', that.isGeneratorFunction(value)) - map.set('Int8Array', that.isInt8Array(value)) - map.set('Map', that.isMap(value)) - map.set('Error', that.isNativeError(value)) - map.set('Number', that.isNumberObject(value)) - map.set('Promise', that.isPromise(value)) - map.set('RegExp', that.isRegExp(value)) - map.set('Set', that.isSet(value)) - map.set('String', that.isStringObject(value)) - map.set('Symbol', that.isSymbolObject(value)) - map.set('WeakMap', that.isWeakMap(value)) - map.set('Uint8Array', that.isUint8Array(value)) - map.set('WeakSet', that.isWeakSet(value)) - for(let [key, value] of map) { - if(value == true) { + map.set('ArrayBuffer', utilType.isAnyArrayBuffer(value)) + map.set('arguments', utilType.isArgumentsObject(value)) + map.set('AsyncFunction', utilType.isAsyncFunction(value)) + map.set('Boolean', utilType.isBooleanObject(value)) + map.set('DataView', utilType.isDataView(value)) + map.set('External', utilType.isExternal(value)) + map.set('Float32Array', utilType.isFloat32Array(value)) + map.set('generator', utilType.isGeneratorFunction(value)) + map.set('Int8Array', utilType.isInt8Array(value)) + map.set('Map', utilType.isMap(value)) + map.set('Error', utilType.isNativeError(value)) + map.set('Number', utilType.isNumberObject(value)) + map.set('Promise', utilType.isPromise(value)) + map.set('RegExp', utilType.isRegExp(value)) + map.set('Set', utilType.isSet(value)) + map.set('String', utilType.isStringObject(value)) + map.set('Symbol', utilType.isSymbolObject(value)) + map.set('WeakMap', utilType.isWeakMap(value)) + map.set('Uint8Array', utilType.isUint8Array(value)) + map.set('WeakSet', utilType.isWeakSet(value)) + for (let [key, value] of map) { + if (value == true) { this.result = key break } @@ -63,10 +54,12 @@ export struct CheckType { } show() { - this.output = `${numberVal} check success, this value type is ${this.check(numberVal)}.\n` - +`${stringVal} check success, this value type is ${this.check(stringVal)}.\n` - +`${booleanVal} check success, this value type is ${this.check(booleanVal)}.\n` - +`${int8View} check success, this value type is ${this.check(int8View)}.\n` + let showResult: string = '' + for (let i = 0; i < this.presetValue.length; i++) { + let typeResult = this.check(this.presetValue[i]) + showResult = showResult + `${this.presetValue[i]} check success,this value type is ${typeResult}\n` + } + this.checkResult = showResult } build() { diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/showKey.ets similarity index 69% rename from Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets rename to Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/showKey.ets index 12cf96187a..9ea7435902 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/show.ets +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/showKey.ets @@ -13,20 +13,11 @@ * limitations under the License. */ -let numberVal = new Number (55) -let booleanVal = new Boolean (true) -let stringVal = new String ('sdsddadas') -let arrayBuffer = new ArrayBuffer(8) -let int8View = new Int8Array(arrayBuffer) -for(let k = 0; k < Int8Array.length; ++k) { - Int8Array[k] = k; -} - - @Component export struct ShowKey { @State result: string = ' ' - @Link output: string + @Link checkResult: string + @Link presetValue: Array build() { Button() { @@ -41,10 +32,10 @@ export struct ShowKey { .padding(5) .margin({ top: 10 }) .onClick(() => { - this.output = `numberVal = ${numberVal}\n` - +`stringVal = ${stringVal}\n` - +`booleanVal = ${booleanVal}\n` - +`arrayBuffer = ${int8View}` + this.checkResult = `numberVal = ${this.presetValue[0]}\n` + +`stringVal = ${this.presetValue[1]}\n` + +`booleanVal = ${this.presetValue[2]}\n` + +`int8Array = ${this.presetValue[3]}` }) } } \ No newline at end of file diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets index 8d714b9cd2..71481139c0 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets @@ -13,45 +13,50 @@ * limitations under the License. */ -import { ShowKey } from '../common/show.ets' -import { CheckKey } from '../common/check.ets' +import { ShowKey } from '../common/showKey.ets' +import { CheckType } from '../common/checkType.ets' + +let int8Array = new Int8Array(new ArrayBuffer(8)) +let numVal = new Number(55) +let strVal = new String('sdsddadas') +let boolVal = new Boolean(true) +for (let i = 0; i < int8Array.length; i++) { + int8Array[i] = i +} @Entry @Component struct Index { - @State output: string = ' ' + @State checkResult: string = ' ' + @State presetValue: Array = [numVal, strVal, boolVal, int8Array] build() { - Column() { - Text($r('app.string.title')) - .textAlign(TextAlign.Center) - .width('100%') - .height('5%') - .backgroundColor('#008bdd') - .fontSize(25) - .fontColor(Color.Black) - .fontWeight(FontWeight.Bold) + Flex() { + Column() { + Text($r('app.string.entry_MainAbility')) + .textAlign(TextAlign.Center) + .width('100%') + .height('6%') + .backgroundColor('#0D9FFB') + .fontSize(20) + .fontColor(Color.Black) - Scroll() { - Column() { - Text(this.output) - .width('90%') - .height('65%') - .fontSize(20) - .padding({ left: 5, right: 5}) - .margin({ left: 10, right: 10, top: 10, bottom: 10 }) - .border({ width: 2, radius: 5, color: Color.Gray }) + Scroll() { + Column() { + Text(this.checkResult) + .width('90%') + .height('65%') + .fontSize(20) + .margin(20) + .padding({ left: 5, right: 5 }) + .border({ width: 2, radius: 15, color: Color.Gray }) + } } - } - Flex({ - direction: FlexDirection.Row, - alignItems: ItemAlign.Center, - justifyContent: FlexAlign.Center, - wrap: FlexWrap.Wrap - }) { - showKey({ output: $output}) - checkType({ output: $output}) + Column() { + ShowKey({ presetValue: $presetValue, checkResult: $checkResult }) + CheckType({ presetValue: $presetValue, checkResult: $checkResult }) + } } } .width('100%') diff --git a/Util/eTSUtilTypeCheck/entry/src/main/resources/base/element/string.json b/Util/eTSUtilTypeCheck/entry/src/main/resources/base/element/string.json index b96d2514d5..8ea33e1542 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/resources/base/element/string.json +++ b/Util/eTSUtilTypeCheck/entry/src/main/resources/base/element/string.json @@ -2,16 +2,12 @@ "string": [ { "name": "entry_MainAbility", - "value": "UtilTypeCheck" + "value": "eTSUtilTypeCheck" }, { "name": "description_mainability", "value": "eTS_Empty Ability" }, - { - "name": "title", - "value": "Check input value" - }, { "name": "text", "value": "confirm" diff --git a/Util/eTSUtilTypeCheck/entry/src/main/resources/en/element/string.json b/Util/eTSUtilTypeCheck/entry/src/main/resources/en/element/string.json index b96d2514d5..8ea33e1542 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/resources/en/element/string.json +++ b/Util/eTSUtilTypeCheck/entry/src/main/resources/en/element/string.json @@ -2,16 +2,12 @@ "string": [ { "name": "entry_MainAbility", - "value": "UtilTypeCheck" + "value": "eTSUtilTypeCheck" }, { "name": "description_mainability", "value": "eTS_Empty Ability" }, - { - "name": "title", - "value": "Check input value" - }, { "name": "text", "value": "confirm" diff --git a/Util/eTSUtilTypeCheck/entry/src/main/resources/zh/element/string.json b/Util/eTSUtilTypeCheck/entry/src/main/resources/zh/element/string.json index 934315c95b..354dbcfd64 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/resources/zh/element/string.json +++ b/Util/eTSUtilTypeCheck/entry/src/main/resources/zh/element/string.json @@ -2,16 +2,12 @@ "string": [ { "name": "entry_MainAbility", - "value": "UtilTypeCheck" + "value": "util工具函数-内置对象类型检查" }, { "name": "description_mainability", "value": "eTS_Empty Ability" }, - { - "name": "title", - "value": "校验输入值" - }, { "name": "text", "value": "确认" diff --git a/Util/eTSUtilTypeCheck/screenhots/devices/main.png b/Util/eTSUtilTypeCheck/screenhots/devices/main.png index 14a07378d397d1cd472708b96f690d4bb0a39119..9540a2a5d5e7a3592a0ab03178bee1fbae2cf01f 100644 GIT binary patch literal 25927 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%0Ae|Rk6el<)P#ZSt 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 literal 39102 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 KtU%mJ+p=Y -- Gitee From f6be47eadcafe5348915f5411aae2d3636df4c60 Mon Sep 17 00:00:00 2001 From: asfasdff Date: Wed, 26 Jan 2022 09:21:20 +0800 Subject: [PATCH 11/14] fix up Signed-off-by: asfasdff --- .../entry/src/main/ets/MainAbility/common/checkType.ets | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/checkType.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/checkType.ets index ec61e44cf5..8f9467f35c 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/checkType.ets +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/checkType.ets @@ -21,11 +21,13 @@ export struct CheckType { @Link checkResult: string @Link presetValue: Array +//在map表中添加判断校验值类型的键值,通过for..of循环迭代每个键值,直至其值判断返回为true +//则跳出循环并返回所对应值的键,如果判断返回全部为false,则返回undefine check(value) { let utilType = new util.Types() let map = new Map() map.set('ArrayBuffer', utilType.isAnyArrayBuffer(value)) - map.set('arguments', utilType.isArgumentsObject(value)) + map.set('Arguments', utilType.isArgumentsObject(value)) map.set('AsyncFunction', utilType.isAsyncFunction(value)) map.set('Boolean', utilType.isBooleanObject(value)) map.set('DataView', utilType.isDataView(value)) -- Gitee From f6c8a3bc6fd76553c7b1fde043530cf2b647907b Mon Sep 17 00:00:00 2001 From: asfasdff Date: Wed, 26 Jan 2022 09:28:38 +0800 Subject: [PATCH 12/14] fix up Signed-off-by: asfasdff --- .../entry/src/main/ets/MainAbility/common/checkType.ets | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/checkType.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/checkType.ets index 8f9467f35c..a75a610725 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/checkType.ets +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/checkType.ets @@ -21,8 +21,8 @@ export struct CheckType { @Link checkResult: string @Link presetValue: Array -//在map表中添加判断校验值类型的键值,通过for..of循环迭代每个键值,直至其值判断返回为true -//则跳出循环并返回所对应值的键,如果判断返回全部为false,则返回undefine +// 在map表中添加判断校验值类型的键值,通过for..of循环迭代每个键值,直至其值判断返回为true +// 则跳出循环并返回所对应值的键,如果判断返回全部为false,则返回undefine check(value) { let utilType = new util.Types() let map = new Map() -- Gitee From ebf92919365a22a72157a9fa3fcccad7d72d7d36 Mon Sep 17 00:00:00 2001 From: asfasdff Date: Wed, 26 Jan 2022 10:04:36 +0800 Subject: [PATCH 13/14] fix up Signed-off-by: asfasdff --- .../entry/src/main/ets/MainAbility/common/checkType.ets | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/checkType.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/checkType.ets index a75a610725..150e7267b6 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/checkType.ets +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/checkType.ets @@ -21,8 +21,13 @@ export struct CheckType { @Link checkResult: string @Link presetValue: Array -// 在map表中添加判断校验值类型的键值,通过for..of循环迭代每个键值,直至其值判断返回为true -// 则跳出循环并返回所对应值的键,如果判断返回全部为false,则返回undefine +/* + * Determine the type of check value.The key in the map is the result of + * judging the type, and the value in the map is the method of judging the type. + * + * @param The value to check. + * @return Returns the check value type. + */ check(value) { let utilType = new util.Types() let map = new Map() -- Gitee From 562ffd928cb97feee4dc0433436a6b3162fddf40 Mon Sep 17 00:00:00 2001 From: asfasdff Date: Sat, 29 Jan 2022 12:02:11 +0800 Subject: [PATCH 14/14] fix up Signed-off-by: asfasdff --- .../main/ets/MainAbility/common/checkType.ets | 51 ++++++++----------- .../src/main/ets/MainAbility/pages/index.ets | 2 +- 2 files changed, 23 insertions(+), 30 deletions(-) diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/checkType.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/checkType.ets index 150e7267b6..52f8a20e12 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/checkType.ets +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/common/checkType.ets @@ -15,45 +15,38 @@ import util from '@ohos.util' +const TAG = '[CheckType]' +let self = null + @Component export struct CheckType { @State result: string = ' ' @Link checkResult: string @Link presetValue: Array -/* - * Determine the type of check value.The key in the map is the result of - * judging the type, and the value in the map is the method of judging the type. - * - * @param The value to check. - * @return Returns the check value type. - */ + aboutToAppear() { + self = this + } + check(value) { let utilType = new util.Types() - let map = new Map() - map.set('ArrayBuffer', utilType.isAnyArrayBuffer(value)) - map.set('Arguments', utilType.isArgumentsObject(value)) - map.set('AsyncFunction', utilType.isAsyncFunction(value)) - map.set('Boolean', utilType.isBooleanObject(value)) - map.set('DataView', utilType.isDataView(value)) - map.set('External', utilType.isExternal(value)) - map.set('Float32Array', utilType.isFloat32Array(value)) - map.set('generator', utilType.isGeneratorFunction(value)) - map.set('Int8Array', utilType.isInt8Array(value)) - map.set('Map', utilType.isMap(value)) - map.set('Error', utilType.isNativeError(value)) - map.set('Number', utilType.isNumberObject(value)) - map.set('Promise', utilType.isPromise(value)) - map.set('RegExp', utilType.isRegExp(value)) - map.set('Set', utilType.isSet(value)) - map.set('String', utilType.isStringObject(value)) - map.set('Symbol', utilType.isSymbolObject(value)) - map.set('WeakMap', utilType.isWeakMap(value)) - map.set('Uint8Array', utilType.isUint8Array(value)) - map.set('WeakSet', utilType.isWeakSet(value)) + let map = new Map([ + ['ArrayBuffer', utilType.isAnyArrayBuffer(value)], + ['Int8Array', utilType.isInt8Array(value)], + ['Number', utilType.isNumberObject(value)], + ['String', utilType.isStringObject(value)], + ['Boolean', utilType.isBooleanObject(value)], + ['ArrayBuffer', utilType.isAnyArrayBuffer(value)], + ['DataView', utilType.isDataView(value)], + ['Arguments', utilType.isArgumentsObject(value)], + ['AsyncFunction', utilType.isAsyncFunction(value)], + ['External', utilType.isExternal(value)], + ['Float32Array', utilType.isFloat32Array(value)], + ['Generator', utilType.isGeneratorFunction(value)], + ]) for (let [key, value] of map) { if (value == true) { - this.result = key + self.result = key break } } diff --git a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets index 71481139c0..7085671a17 100644 --- a/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets +++ b/Util/eTSUtilTypeCheck/entry/src/main/ets/MainAbility/pages/index.ets @@ -27,7 +27,7 @@ for (let i = 0; i < int8Array.length; i++) { @Entry @Component struct Index { - @State checkResult: string = ' ' + @State checkResult: string = '' @State presetValue: Array = [numVal, strVal, boolVal, int8Array] build() { -- Gitee