tmui-cli 2.0.3 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -14
- package/data/components.json +1 -1
- package/data/config.json +1 -1
- package/data/doc-index.json +1 -1
- package/data/examples/radio.vue +4 -0
- package/data/guides//346/233/264/346/226/260/346/227/245/345/277/227.md +2 -0
- package/data/tmui4x/60.AI/350/207/252/345/212/250/345/214/226/01.Agent.md +42 -16
- package/data/tmui4x/60.AI/350/207/252/345/212/250/345/214/226/04.SKILL.md +9 -8
- package/data/tmui4x-doc-index.json +1 -1
- package/data/uni-app-x-docs/.vuepress/components/md/banner.vue +241 -0
- package/data/uni-app-x-docs/.vuepress/components/md/hperm.vue +59 -0
- package/data/uni-app-x-docs/.vuepress/components/md/virtual.vue +49 -0
- package/data/uni-app-x-docs/.vuepress/config/copy.js +7 -0
- package/data/uni-app-x-docs/.vuepress/config/footer.js +220 -0
- package/data/uni-app-x-docs/.vuepress/config/help.js +4 -0
- package/data/uni-app-x-docs/.vuepress/config/i18n/index.js +2 -0
- package/data/uni-app-x-docs/.vuepress/config/navbar.js +144 -0
- package/data/uni-app-x-docs/.vuepress/config/redirectRouter.js +35 -0
- package/data/uni-app-x-docs/.vuepress/config/routerMap.js +30 -0
- package/data/uni-app-x-docs/.vuepress/config/searchPage.js +53 -0
- package/data/uni-app-x-docs/.vuepress/config/siderbar/index.js +6 -0
- package/data/uni-app-x-docs/.vuepress/config/siderbar/uni-app-x.js +69 -0
- package/data/uni-app-x-docs/.vuepress/config/toc.js +13 -0
- package/data/uni-app-x-docs/.vuepress/config.js +130 -0
- package/data/uni-app-x-docs/.vuepress/markdown/inject-json-to-md.js +248 -0
- package/data/uni-app-x-docs/.vuepress/public/baidu.js +7 -0
- package/data/uni-app-x-docs/.vuepress/public/h5/hybrid/html/local.html +88 -0
- package/data/uni-app-x-docs/.vuepress/public/h5/index.html +14 -0
- package/data/uni-app-x-docs/.vuepress/public/h5/pcguide.html +241 -0
- package/data/uni-app-x-docs/.vuepress/public/h5/touch-emulator.js +363 -0
- package/data/uni-app-x-docs/.vuepress/public/js/miku.js +10 -0
- package/data/uni-app-x-docs/.vuepress/public/miku-delivery-1.2.1.js +7 -0
- package/data/uni-app-x-docs/.vuepress/public/miku-delivery-sw-1.2.1.js +7 -0
- package/data/uni-app-x-docs/.vuepress/public/pc.html +157 -0
- package/data/uni-app-x-docs/.vuepress/public/static/web-view-forum.html +119 -0
- package/data/uni-app-x-docs/.vuepress/public/static/web-view.html +119 -0
- package/data/uni-app-x-docs/.vuepress/public/svg/uni-open-bridge.svg +1 -0
- package/data/uni-app-x-docs/.vuepress/utils/code.js +61 -0
- package/data/uni-app-x-docs/.vuepress/utils/cssJson.json +1 -0
- package/data/uni-app-x-docs/.vuepress/utils/customTypeJson.json +1 -0
- package/data/uni-app-x-docs/.vuepress/utils/example-mapping.json +46 -0
- package/data/uni-app-x-docs/.vuepress/utils/example.js +107 -0
- package/data/uni-app-x-docs/.vuepress/utils/index.js +20 -0
- package/data/uni-app-x-docs/.vuepress/utils/maniFestJson.json +1 -0
- package/data/uni-app-x-docs/.vuepress/utils/pageInstanceJson.json +1 -0
- package/data/uni-app-x-docs/.vuepress/utils/pagesJson.json +1 -0
- package/data/uni-app-x-docs/.vuepress/utils/specialStringJson.json +1 -0
- package/data/uni-app-x-docs/.vuepress/utils/utsApiJson.json +1 -0
- package/data/uni-app-x-docs/.vuepress/utils/utsComJson.json +1 -0
- package/data/uni-app-x-docs/.vuepress/utils/utsDiffTSJson.json +1 -0
- package/data/uni-app-x-docs/.vuepress/utils/utsJson.json +1 -0
- package/data/uni-app-x-docs/.vuepress/utils/utsUnicloudApiJson.json +1 -0
- package/data/uni-app-x-docs/.vuepress/utils/vueJson.json +1 -0
- package/data/uni-app-x-docs/404.md +2 -0
- package/data/uni-app-x-docs/_sidebar.md +140 -0
- package/data/uni-app-x-docs/adapt.md +169 -0
- package/data/uni-app-x-docs/ai/NOTE.md +7 -0
- package/data/uni-app-x-docs/api/README.md +105 -0
- package/data/uni-app-x-docs/api/_sidebar.md +165 -0
- package/data/uni-app-x-docs/api/accelerometer.md +72 -0
- package/data/uni-app-x-docs/api/action-sheet.md +40 -0
- package/data/uni-app-x-docs/api/animation-frame.md +57 -0
- package/data/uni-app-x-docs/api/app-route.md +323 -0
- package/data/uni-app-x-docs/api/authentication.md +62 -0
- package/data/uni-app-x-docs/api/base64.md +33 -0
- package/data/uni-app-x-docs/api/bio-auth.md +5 -0
- package/data/uni-app-x-docs/api/calendar.md +40 -0
- package/data/uni-app-x-docs/api/canvas-get-image-data.md +5 -0
- package/data/uni-app-x-docs/api/canvas-put-image-data.md +5 -0
- package/data/uni-app-x-docs/api/canvas-to-temp-file-path.md +17 -0
- package/data/uni-app-x-docs/api/canvasrenderingcontext2d.md +673 -0
- package/data/uni-app-x-docs/api/capture-screen.md +55 -0
- package/data/uni-app-x-docs/api/capturescreen.md +5 -0
- package/data/uni-app-x-docs/api/choose-file.md +27 -0
- package/data/uni-app-x-docs/api/choose-image.md +40 -0
- package/data/uni-app-x-docs/api/choose-location.md +304 -0
- package/data/uni-app-x-docs/api/choose-media.md +29 -0
- package/data/uni-app-x-docs/api/choose-video.md +31 -0
- package/data/uni-app-x-docs/api/clipboard.md +44 -0
- package/data/uni-app-x-docs/api/compass.md +53 -0
- package/data/uni-app-x-docs/api/compress-image.md +25 -0
- package/data/uni-app-x-docs/api/compress-video.md +21 -0
- package/data/uni-app-x-docs/api/connect-event-source.md +34 -0
- package/data/uni-app-x-docs/api/contact.md +37 -0
- package/data/uni-app-x-docs/api/create-camera-context.md +27 -0
- package/data/uni-app-x-docs/api/create-canvas-context-async.md +36 -0
- package/data/uni-app-x-docs/api/create-editor-context-async.md +23 -0
- package/data/uni-app-x-docs/api/create-inner-audio-context.md +67 -0
- package/data/uni-app-x-docs/api/create-intersection-observer.md +17 -0
- package/data/uni-app-x-docs/api/create-interstitial-ad.md +43 -0
- package/data/uni-app-x-docs/api/create-live-player-context.md +26 -0
- package/data/uni-app-x-docs/api/create-live-pusher-context.md +26 -0
- package/data/uni-app-x-docs/api/create-map-context.md +13 -0
- package/data/uni-app-x-docs/api/create-request-permission-listener.md +37 -0
- package/data/uni-app-x-docs/api/create-rewarded-video-ad.md +58 -0
- package/data/uni-app-x-docs/api/create-selector-query.md +161 -0
- package/data/uni-app-x-docs/api/create-video-context.md +46 -0
- package/data/uni-app-x-docs/api/create-webview-context.md +66 -0
- package/data/uni-app-x-docs/api/create-worker.md +293 -0
- package/data/uni-app-x-docs/api/dialog-page.md +113 -0
- package/data/uni-app-x-docs/api/dom/README.md +520 -0
- package/data/uni-app-x-docs/api/dom/cssstyledeclaration.md +515 -0
- package/data/uni-app-x-docs/api/dom/domrect.md +11 -0
- package/data/uni-app-x-docs/api/dom/drawablecontext.md +212 -0
- package/data/uni-app-x-docs/api/dom/element.md +5 -0
- package/data/uni-app-x-docs/api/dom/unicanvaselement.md +101 -0
- package/data/uni-app-x-docs/api/dom/unielement.md +608 -0
- package/data/uni-app-x-docs/api/dom/uniimageelement.md +25 -0
- package/data/uni-app-x-docs/api/dom/uniinputelement.md +11 -0
- package/data/uni-app-x-docs/api/dom/uninativeviewelement.md +98 -0
- package/data/uni-app-x-docs/api/dom/uniresizeobserver.md +48 -0
- package/data/uni-app-x-docs/api/dom/unitextareaelement.md +11 -0
- package/data/uni-app-x-docs/api/dom/unitextelement.md +49 -0
- package/data/uni-app-x-docs/api/dom/univideoelement.md +108 -0
- package/data/uni-app-x-docs/api/dom/uniwebviewelement.md +97 -0
- package/data/uni-app-x-docs/api/download-file.md +52 -0
- package/data/uni-app-x-docs/api/env.md +19 -0
- package/data/uni-app-x-docs/api/event-bus.md +81 -0
- package/data/uni-app-x-docs/api/exit.md +63 -0
- package/data/uni-app-x-docs/api/ext.md +61 -0
- package/data/uni-app-x-docs/api/facial-recognition-meta-info.md +47 -0
- package/data/uni-app-x-docs/api/facial-recognition-verify.md +5 -0
- package/data/uni-app-x-docs/api/file-system-spec.md +224 -0
- package/data/uni-app-x-docs/api/get-accessibility-info.md +23 -0
- package/data/uni-app-x-docs/api/get-app-authorize-setting.md +29 -0
- package/data/uni-app-x-docs/api/get-app-base-info.md +32 -0
- package/data/uni-app-x-docs/api/get-app.md +28 -0
- package/data/uni-app-x-docs/api/get-background-audio-manager.md +54 -0
- package/data/uni-app-x-docs/api/get-battery-info.md +31 -0
- package/data/uni-app-x-docs/api/get-current-pages.md +39 -0
- package/data/uni-app-x-docs/api/get-device-info.md +35 -0
- package/data/uni-app-x-docs/api/get-element-by-id.md +55 -0
- package/data/uni-app-x-docs/api/get-element.md +5 -0
- package/data/uni-app-x-docs/api/get-file-system-manager.md +62 -0
- package/data/uni-app-x-docs/api/get-image-info.md +22 -0
- package/data/uni-app-x-docs/api/get-launch-options-sync.md +5 -0
- package/data/uni-app-x-docs/api/get-location.md +210 -0
- package/data/uni-app-x-docs/api/get-network-type.md +23 -0
- package/data/uni-app-x-docs/api/get-performance.md +17 -0
- package/data/uni-app-x-docs/api/get-provider.md +5 -0
- package/data/uni-app-x-docs/api/get-recorder-manager.md +51 -0
- package/data/uni-app-x-docs/api/get-system-info.md +100 -0
- package/data/uni-app-x-docs/api/get-system-setting.md +24 -0
- package/data/uni-app-x-docs/api/get-univerify-manager.md +306 -0
- package/data/uni-app-x-docs/api/get-video-info.md +21 -0
- package/data/uni-app-x-docs/api/get-window-info.md +55 -0
- package/data/uni-app-x-docs/api/gyroscope.md +80 -0
- package/data/uni-app-x-docs/api/image.md +32 -0
- package/data/uni-app-x-docs/api/install-apk.md +26 -0
- package/data/uni-app-x-docs/api/interceptor.md +35 -0
- package/data/uni-app-x-docs/api/is-simulator.md +29 -0
- package/data/uni-app-x-docs/api/keyboard.md +55 -0
- package/data/uni-app-x-docs/api/launch.md +43 -0
- package/data/uni-app-x-docs/api/load-font-face.md +46 -0
- package/data/uni-app-x-docs/api/loading.md +61 -0
- package/data/uni-app-x-docs/api/locale.md +43 -0
- package/data/uni-app-x-docs/api/location-change.md +123 -0
- package/data/uni-app-x-docs/api/make-phone-call.md +25 -0
- package/data/uni-app-x-docs/api/memory.md +29 -0
- package/data/uni-app-x-docs/api/modal.md +51 -0
- package/data/uni-app-x-docs/api/navigator-bar-loading.md +40 -0
- package/data/uni-app-x-docs/api/navigator.md +89 -0
- package/data/uni-app-x-docs/api/network-status-change.md +41 -0
- package/data/uni-app-x-docs/api/network-summarize.md +40 -0
- package/data/uni-app-x-docs/api/nodes-info.md +5 -0
- package/data/uni-app-x-docs/api/on-tab-bar-mid-button-tap.md +20 -0
- package/data/uni-app-x-docs/api/open-app-authorize-setting.md +23 -0
- package/data/uni-app-x-docs/api/open-document.md +21 -0
- package/data/uni-app-x-docs/api/open-location.md +22 -0
- package/data/uni-app-x-docs/api/page-scroll-to.md +57 -0
- package/data/uni-app-x-docs/api/path2d.md +160 -0
- package/data/uni-app-x-docs/api/preview-image.md +44 -0
- package/data/uni-app-x-docs/api/privacy.md +84 -0
- package/data/uni-app-x-docs/api/provider.md +123 -0
- package/data/uni-app-x-docs/api/pull-down-refresh.md +46 -0
- package/data/uni-app-x-docs/api/push.md +1 -0
- package/data/uni-app-x-docs/api/report.md +44 -0
- package/data/uni-app-x-docs/api/request-merchant-transfer.md +31 -0
- package/data/uni-app-x-docs/api/request-payment.md +212 -0
- package/data/uni-app-x-docs/api/request-system-permission.md +21 -0
- package/data/uni-app-x-docs/api/request.md +73 -0
- package/data/uni-app-x-docs/api/rpx2px.md +19 -0
- package/data/uni-app-x-docs/api/save-image-to-photos-album.md +19 -0
- package/data/uni-app-x-docs/api/save-video-to-photos-album.md +17 -0
- package/data/uni-app-x-docs/api/scan-code.md +39 -0
- package/data/uni-app-x-docs/api/screen-brightness.md +53 -0
- package/data/uni-app-x-docs/api/set-navigation-bar-color.md +27 -0
- package/data/uni-app-x-docs/api/set-navigation-bar-title.md +22 -0
- package/data/uni-app-x-docs/api/set-tab-bar.md +121 -0
- package/data/uni-app-x-docs/api/set-tabbar.md +5 -0
- package/data/uni-app-x-docs/api/share-with-system.md +27 -0
- package/data/uni-app-x-docs/api/share.md +128 -0
- package/data/uni-app-x-docs/api/show-action-sheet.md +5 -0
- package/data/uni-app-x-docs/api/show-loading.md +5 -0
- package/data/uni-app-x-docs/api/show-modal.md +5 -0
- package/data/uni-app-x-docs/api/show-toast.md +5 -0
- package/data/uni-app-x-docs/api/sign-in.md +141 -0
- package/data/uni-app-x-docs/api/storage.md +347 -0
- package/data/uni-app-x-docs/api/theme-change.md +477 -0
- package/data/uni-app-x-docs/api/theme.md +5 -0
- package/data/uni-app-x-docs/api/toast.md +62 -0
- package/data/uni-app-x-docs/api/uni-push.md +251 -0
- package/data/uni-app-x-docs/api/unicloud/README.md +25 -0
- package/data/uni-app-x-docs/api/unicloud/database.md +27 -0
- package/data/uni-app-x-docs/api/unicloud/function.md +58 -0
- package/data/uni-app-x-docs/api/unicloud/object.md +75 -0
- package/data/uni-app-x-docs/api/unicloud/sse-channel.md +103 -0
- package/data/uni-app-x-docs/api/unicloud/storage.md +46 -0
- package/data/uni-app-x-docs/api/unicloud/utils.md +71 -0
- package/data/uni-app-x-docs/api/unipage.md +389 -0
- package/data/uni-app-x-docs/api/upload-file.md +40 -0
- package/data/uni-app-x-docs/api/vibrate.md +37 -0
- package/data/uni-app-x-docs/api/virtual-payment.md +228 -0
- package/data/uni-app-x-docs/api/websocket-global.md +5 -0
- package/data/uni-app-x-docs/api/websocket.md +116 -0
- package/data/uni-app-x-docs/api/wide-screen-adaptation.md +197 -0
- package/data/uni-app-x-docs/api/wifi.md +135 -0
- package/data/uni-app-x-docs/api/window.md +39 -0
- package/data/uni-app-x-docs/app-harmony/README.md +75 -0
- package/data/uni-app-x-docs/app-harmony/harmony-vapor.md +5 -0
- package/data/uni-app-x-docs/app-vapor.md +599 -0
- package/data/uni-app-x-docs/benchmark/vapor-benchmark-android.md +488 -0
- package/data/uni-app-x-docs/benchmark/vapor-benchmark-harmony.md +312 -0
- package/data/uni-app-x-docs/benchmark/vapor-benchmark-ios.md +375 -0
- package/data/uni-app-x-docs/collocation/_sidebar.md +15 -0
- package/data/uni-app-x-docs/collocation/app.md +268 -0
- package/data/uni-app-x-docs/collocation/manifest-android.md +1321 -0
- package/data/uni-app-x-docs/collocation/manifest-harmony.md +152 -0
- package/data/uni-app-x-docs/collocation/manifest-ios.md +732 -0
- package/data/uni-app-x-docs/collocation/manifest-modules.md +521 -0
- package/data/uni-app-x-docs/collocation/manifest-splashscreen.md +232 -0
- package/data/uni-app-x-docs/collocation/manifest.md +591 -0
- package/data/uni-app-x-docs/collocation/pagesjson.md +462 -0
- package/data/uni-app-x-docs/collocation/themejson.md +177 -0
- package/data/uni-app-x-docs/compiler/README.md +125 -0
- package/data/uni-app-x-docs/compiler/_sidebar.md +4 -0
- package/data/uni-app-x-docs/component/README.md +228 -0
- package/data/uni-app-x-docs/component/_sidebar.md +118 -0
- package/data/uni-app-x-docs/component/ad-custom.md +19 -0
- package/data/uni-app-x-docs/component/ad.md +45 -0
- package/data/uni-app-x-docs/component/animation-view.md +19 -0
- package/data/uni-app-x-docs/component/aria-component.md +19 -0
- package/data/uni-app-x-docs/component/audio.md +7 -0
- package/data/uni-app-x-docs/component/block.md +21 -0
- package/data/uni-app-x-docs/component/button.md +105 -0
- package/data/uni-app-x-docs/component/camera.md +54 -0
- package/data/uni-app-x-docs/component/canvas.md +163 -0
- package/data/uni-app-x-docs/component/channel-live.md +19 -0
- package/data/uni-app-x-docs/component/channel-video.md +19 -0
- package/data/uni-app-x-docs/component/checkbox-group.md +21 -0
- package/data/uni-app-x-docs/component/checkbox.md +27 -0
- package/data/uni-app-x-docs/component/common.md +304 -0
- package/data/uni-app-x-docs/component/cover-image.md +25 -0
- package/data/uni-app-x-docs/component/cover-view.md +25 -0
- package/data/uni-app-x-docs/component/custom-tab-bar.md +19 -0
- package/data/uni-app-x-docs/component/double-tap-gesture-handler.md +19 -0
- package/data/uni-app-x-docs/component/draggable-sheet.md +19 -0
- package/data/uni-app-x-docs/component/editor.md +33 -0
- package/data/uni-app-x-docs/component/flow-item.md +5 -0
- package/data/uni-app-x-docs/component/force-press-gesture-handler.md +19 -0
- package/data/uni-app-x-docs/component/form.md +108 -0
- package/data/uni-app-x-docs/component/functional-page-navigator.md +19 -0
- package/data/uni-app-x-docs/component/glass-effect-view.md +32 -0
- package/data/uni-app-x-docs/component/grid-builder.md +19 -0
- package/data/uni-app-x-docs/component/grid-view.md +19 -0
- package/data/uni-app-x-docs/component/horizontal-drag-gesture-handler.md +19 -0
- package/data/uni-app-x-docs/component/icon.md +19 -0
- package/data/uni-app-x-docs/component/image.md +79 -0
- package/data/uni-app-x-docs/component/input.md +121 -0
- package/data/uni-app-x-docs/component/keyboard-accessory.md +19 -0
- package/data/uni-app-x-docs/component/label.md +21 -0
- package/data/uni-app-x-docs/component/list-builder.md +19 -0
- package/data/uni-app-x-docs/component/list-item.md +1 -0
- package/data/uni-app-x-docs/component/list-view.md +191 -0
- package/data/uni-app-x-docs/component/live-player.md +29 -0
- package/data/uni-app-x-docs/component/live-pusher.md +31 -0
- package/data/uni-app-x-docs/component/loading.md +31 -0
- package/data/uni-app-x-docs/component/long-press-gesture-handler.md +19 -0
- package/data/uni-app-x-docs/component/map.md +116 -0
- package/data/uni-app-x-docs/component/match-media.md +21 -0
- package/data/uni-app-x-docs/component/movable-area.md +27 -0
- package/data/uni-app-x-docs/component/movable-view.md +27 -0
- package/data/uni-app-x-docs/component/native-component.md +19 -0
- package/data/uni-app-x-docs/component/native-view.md +210 -0
- package/data/uni-app-x-docs/component/navigation-bar.md +19 -0
- package/data/uni-app-x-docs/component/navigator.md +22 -0
- package/data/uni-app-x-docs/component/nested-scroll-body.md +32 -0
- package/data/uni-app-x-docs/component/nested-scroll-header.md +32 -0
- package/data/uni-app-x-docs/component/nested-scroll.md +8 -0
- package/data/uni-app-x-docs/component/official-account.md +19 -0
- package/data/uni-app-x-docs/component/open-container.md +19 -0
- package/data/uni-app-x-docs/component/page-container.md +37 -0
- package/data/uni-app-x-docs/component/page-meta.md +19 -0
- package/data/uni-app-x-docs/component/pan-gesture-handler.md +19 -0
- package/data/uni-app-x-docs/component/picker-view-column.md +5 -0
- package/data/uni-app-x-docs/component/picker-view.md +48 -0
- package/data/uni-app-x-docs/component/picker.md +29 -0
- package/data/uni-app-x-docs/component/progress.md +19 -0
- package/data/uni-app-x-docs/component/radio-group.md +21 -0
- package/data/uni-app-x-docs/component/radio.md +27 -0
- package/data/uni-app-x-docs/component/rich-text.md +108 -0
- package/data/uni-app-x-docs/component/root-portal.md +19 -0
- package/data/uni-app-x-docs/component/scale-gesture-handler.md +19 -0
- package/data/uni-app-x-docs/component/scroll-view.md +213 -0
- package/data/uni-app-x-docs/component/share-element.md +84 -0
- package/data/uni-app-x-docs/component/slider.md +44 -0
- package/data/uni-app-x-docs/component/snapshot.md +19 -0
- package/data/uni-app-x-docs/component/span.md +19 -0
- package/data/uni-app-x-docs/component/sticky-header.md +50 -0
- package/data/uni-app-x-docs/component/sticky-section.md +54 -0
- package/data/uni-app-x-docs/component/sticky.md +8 -0
- package/data/uni-app-x-docs/component/store-home.md +19 -0
- package/data/uni-app-x-docs/component/store-product.md +19 -0
- package/data/uni-app-x-docs/component/swiper-item.md +5 -0
- package/data/uni-app-x-docs/component/swiper.md +94 -0
- package/data/uni-app-x-docs/component/switch.md +28 -0
- package/data/uni-app-x-docs/component/tap-gesture-handler.md +19 -0
- package/data/uni-app-x-docs/component/text.md +242 -0
- package/data/uni-app-x-docs/component/textarea.md +90 -0
- package/data/uni-app-x-docs/component/uni-ui-x/README.md +1 -0
- package/data/uni-app-x-docs/component/uni-ui-x/uni-badge-view.md +25 -0
- package/data/uni-app-x-docs/component/uni-ui-x/uni-collapse-item.md +5 -0
- package/data/uni-app-x-docs/component/uni-ui-x/uni-collapse.md +48 -0
- package/data/uni-app-x-docs/component/uni-ui-x/uni-drag-cell.md +25 -0
- package/data/uni-app-x-docs/component/uni-ui-x/uni-fab-button.md +25 -0
- package/data/uni-app-x-docs/component/uni-ui-x/uni-index-bar.md +25 -0
- package/data/uni-app-x-docs/component/uni-ui-x/uni-link.md +25 -0
- package/data/uni-app-x-docs/component/uni-ui-x/uni-nav-bar.md +25 -0
- package/data/uni-app-x-docs/component/uni-ui-x/uni-number-box.md +25 -0
- package/data/uni-app-x-docs/component/uni-ui-x/uni-rate.md +25 -0
- package/data/uni-app-x-docs/component/uni-ui-x/uni-refresh-box.md +25 -0
- package/data/uni-app-x-docs/component/uni-ui-x/uni-tab-bar.md +5 -0
- package/data/uni-app-x-docs/component/uni-ui-x/uni-tab-content.md +5 -0
- package/data/uni-app-x-docs/component/uni-ui-x/uni-tab-item.md +5 -0
- package/data/uni-app-x-docs/component/uni-ui-x/uni-tab-midbutton.md +5 -0
- package/data/uni-app-x-docs/component/uni-ui-x/uni-tab.md +111 -0
- package/data/uni-app-x-docs/component/uni-ui-x/uni-time-format.md +25 -0
- package/data/uni-app-x-docs/component/unicloud-db.md +19 -0
- package/data/uni-app-x-docs/component/vertical-drag-gesture-handler.md +19 -0
- package/data/uni-app-x-docs/component/video.md +139 -0
- package/data/uni-app-x-docs/component/view.md +86 -0
- package/data/uni-app-x-docs/component/voip-room.md +19 -0
- package/data/uni-app-x-docs/component/waterflow.md +122 -0
- package/data/uni-app-x-docs/component/web-view.md +160 -0
- package/data/uni-app-x-docs/css/README.md +274 -0
- package/data/uni-app-x-docs/css/_sidebar.md +103 -0
- package/data/uni-app-x-docs/css/align-content.md +22 -0
- package/data/uni-app-x-docs/css/align-items.md +20 -0
- package/data/uni-app-x-docs/css/align-self.md +20 -0
- package/data/uni-app-x-docs/css/animation-composition.md +18 -0
- package/data/uni-app-x-docs/css/animation-delay.md +18 -0
- package/data/uni-app-x-docs/css/animation-direction.md +18 -0
- package/data/uni-app-x-docs/css/animation-duration.md +18 -0
- package/data/uni-app-x-docs/css/animation-fill-mode.md +18 -0
- package/data/uni-app-x-docs/css/animation-iteration-count.md +18 -0
- package/data/uni-app-x-docs/css/animation-name.md +18 -0
- package/data/uni-app-x-docs/css/animation-play-state.md +18 -0
- package/data/uni-app-x-docs/css/animation-range-end.md +18 -0
- package/data/uni-app-x-docs/css/animation-range-start.md +18 -0
- package/data/uni-app-x-docs/css/animation-range.md +18 -0
- package/data/uni-app-x-docs/css/animation-timeline.md +18 -0
- package/data/uni-app-x-docs/css/animation-timing-function.md +18 -0
- package/data/uni-app-x-docs/css/animation.md +18 -0
- package/data/uni-app-x-docs/css/backdrop-filter.md +21 -0
- package/data/uni-app-x-docs/css/background-clip.md +20 -0
- package/data/uni-app-x-docs/css/background-color.md +25 -0
- package/data/uni-app-x-docs/css/background-image.md +48 -0
- package/data/uni-app-x-docs/css/background.md +20 -0
- package/data/uni-app-x-docs/css/border-bottom-color.md +20 -0
- package/data/uni-app-x-docs/css/border-bottom-left-radius.md +23 -0
- package/data/uni-app-x-docs/css/border-bottom-right-radius.md +23 -0
- package/data/uni-app-x-docs/css/border-bottom-style.md +20 -0
- package/data/uni-app-x-docs/css/border-bottom-width.md +27 -0
- package/data/uni-app-x-docs/css/border-bottom.md +20 -0
- package/data/uni-app-x-docs/css/border-color.md +20 -0
- package/data/uni-app-x-docs/css/border-left-color.md +20 -0
- package/data/uni-app-x-docs/css/border-left-style.md +20 -0
- package/data/uni-app-x-docs/css/border-left-width.md +27 -0
- package/data/uni-app-x-docs/css/border-left.md +20 -0
- package/data/uni-app-x-docs/css/border-radius.md +27 -0
- package/data/uni-app-x-docs/css/border-right-color.md +20 -0
- package/data/uni-app-x-docs/css/border-right-style.md +20 -0
- package/data/uni-app-x-docs/css/border-right-width.md +27 -0
- package/data/uni-app-x-docs/css/border-right.md +20 -0
- package/data/uni-app-x-docs/css/border-style.md +24 -0
- package/data/uni-app-x-docs/css/border-top-color.md +20 -0
- package/data/uni-app-x-docs/css/border-top-left-radius.md +23 -0
- package/data/uni-app-x-docs/css/border-top-right-radius.md +23 -0
- package/data/uni-app-x-docs/css/border-top-style.md +20 -0
- package/data/uni-app-x-docs/css/border-top-width.md +27 -0
- package/data/uni-app-x-docs/css/border-top.md +20 -0
- package/data/uni-app-x-docs/css/border-width.md +24 -0
- package/data/uni-app-x-docs/css/border.md +23 -0
- package/data/uni-app-x-docs/css/bottom.md +20 -0
- package/data/uni-app-x-docs/css/box-shadow.md +26 -0
- package/data/uni-app-x-docs/css/box-sizing.md +20 -0
- package/data/uni-app-x-docs/css/color.md +27 -0
- package/data/uni-app-x-docs/css/common/at-rules.md +293 -0
- package/data/uni-app-x-docs/css/common/color.md +9 -0
- package/data/uni-app-x-docs/css/common/function.md +165 -0
- package/data/uni-app-x-docs/css/common/length.md +89 -0
- package/data/uni-app-x-docs/css/common/selector.md +50 -0
- package/data/uni-app-x-docs/css/common/style-isolation.md +258 -0
- package/data/uni-app-x-docs/css/common/variable.md +1 -0
- package/data/uni-app-x-docs/css/direction.md +18 -0
- package/data/uni-app-x-docs/css/display.md +23 -0
- package/data/uni-app-x-docs/css/flex-basis.md +20 -0
- package/data/uni-app-x-docs/css/flex-direction.md +20 -0
- package/data/uni-app-x-docs/css/flex-flow.md +20 -0
- package/data/uni-app-x-docs/css/flex-grow.md +20 -0
- package/data/uni-app-x-docs/css/flex-shrink.md +20 -0
- package/data/uni-app-x-docs/css/flex-wrap.md +20 -0
- package/data/uni-app-x-docs/css/flex.md +20 -0
- package/data/uni-app-x-docs/css/font-family.md +50 -0
- package/data/uni-app-x-docs/css/font-size.md +51 -0
- package/data/uni-app-x-docs/css/font-style.md +23 -0
- package/data/uni-app-x-docs/css/font-weight.md +24 -0
- package/data/uni-app-x-docs/css/height.md +23 -0
- package/data/uni-app-x-docs/css/justify-content.md +20 -0
- package/data/uni-app-x-docs/css/left.md +20 -0
- package/data/uni-app-x-docs/css/letter-spacing.md +20 -0
- package/data/uni-app-x-docs/css/line-height.md +37 -0
- package/data/uni-app-x-docs/css/lines.md +23 -0
- package/data/uni-app-x-docs/css/margin-bottom.md +25 -0
- package/data/uni-app-x-docs/css/margin-left.md +25 -0
- package/data/uni-app-x-docs/css/margin-right.md +25 -0
- package/data/uni-app-x-docs/css/margin-top.md +25 -0
- package/data/uni-app-x-docs/css/margin.md +33 -0
- package/data/uni-app-x-docs/css/max-height.md +20 -0
- package/data/uni-app-x-docs/css/max-width.md +20 -0
- package/data/uni-app-x-docs/css/min-height.md +27 -0
- package/data/uni-app-x-docs/css/min-width.md +20 -0
- package/data/uni-app-x-docs/css/opacity.md +20 -0
- package/data/uni-app-x-docs/css/overflow.md +28 -0
- package/data/uni-app-x-docs/css/padding-bottom.md +23 -0
- package/data/uni-app-x-docs/css/padding-left.md +23 -0
- package/data/uni-app-x-docs/css/padding-right.md +23 -0
- package/data/uni-app-x-docs/css/padding-top.md +23 -0
- package/data/uni-app-x-docs/css/padding.md +23 -0
- package/data/uni-app-x-docs/css/pointer-events.md +26 -0
- package/data/uni-app-x-docs/css/position.md +50 -0
- package/data/uni-app-x-docs/css/right.md +20 -0
- package/data/uni-app-x-docs/css/text-align.md +23 -0
- package/data/uni-app-x-docs/css/text-decoration-color.md +25 -0
- package/data/uni-app-x-docs/css/text-decoration-line.md +24 -0
- package/data/uni-app-x-docs/css/text-decoration-style.md +23 -0
- package/data/uni-app-x-docs/css/text-decoration-thickness.md +23 -0
- package/data/uni-app-x-docs/css/text-decoration.md +24 -0
- package/data/uni-app-x-docs/css/text-overflow.md +24 -0
- package/data/uni-app-x-docs/css/text-shadow.md +22 -0
- package/data/uni-app-x-docs/css/top.md +20 -0
- package/data/uni-app-x-docs/css/transform-origin.md +20 -0
- package/data/uni-app-x-docs/css/transform.md +32 -0
- package/data/uni-app-x-docs/css/transition-delay.md +27 -0
- package/data/uni-app-x-docs/css/transition-duration.md +27 -0
- package/data/uni-app-x-docs/css/transition-property.md +23 -0
- package/data/uni-app-x-docs/css/transition-timing-function.md +23 -0
- package/data/uni-app-x-docs/css/transition.md +43 -0
- package/data/uni-app-x-docs/css/visibility.md +26 -0
- package/data/uni-app-x-docs/css/white-space.md +49 -0
- package/data/uni-app-x-docs/css/width.md +23 -0
- package/data/uni-app-x-docs/css/z-index.md +127 -0
- package/data/uni-app-x-docs/debug/android-inspector.md +55 -0
- package/data/uni-app-x-docs/i18n.md +379 -0
- package/data/uni-app-x-docs/mp/README.md +155 -0
- package/data/uni-app-x-docs/mp/native-component-and-wxs.md +166 -0
- package/data/uni-app-x-docs/native/README.md +67 -0
- package/data/uni-app-x-docs/native/debug/android.md +126 -0
- package/data/uni-app-x-docs/native/debug/harmony.md +119 -0
- package/data/uni-app-x-docs/native/debug/ios.md +92 -0
- package/data/uni-app-x-docs/native/download/android.md +132 -0
- package/data/uni-app-x-docs/native/download/ios.md +32 -0
- package/data/uni-app-x-docs/native/modules/android/others.md +1441 -0
- package/data/uni-app-x-docs/native/modules/android/uni-ad.md +104 -0
- package/data/uni-app-x-docs/native/modules/android/uni-facialRecognitionVerify.md +74 -0
- package/data/uni-app-x-docs/native/modules/android/uni-getLocation.md +131 -0
- package/data/uni-app-x-docs/native/modules/android/uni-map-tencent.md +101 -0
- package/data/uni-app-x-docs/native/modules/android/uni-oauth.md +61 -0
- package/data/uni-app-x-docs/native/modules/android/uni-payment.md +120 -0
- package/data/uni-app-x-docs/native/modules/android/uni-push.md +229 -0
- package/data/uni-app-x-docs/native/modules/android/uni-share.md +61 -0
- package/data/uni-app-x-docs/native/modules/android/uni-verify.md +105 -0
- package/data/uni-app-x-docs/native/modules/android/uni-video.md +135 -0
- package/data/uni-app-x-docs/native/modules/harmony/facialVerify.md +47 -0
- package/data/uni-app-x-docs/native/modules/harmony/location.md +43 -0
- package/data/uni-app-x-docs/native/modules/harmony/map.md +64 -0
- package/data/uni-app-x-docs/native/modules/harmony/modules.md +23 -0
- package/data/uni-app-x-docs/native/modules/harmony/oauth.md +47 -0
- package/data/uni-app-x-docs/native/modules/harmony/pay.md +87 -0
- package/data/uni-app-x-docs/native/modules/harmony/push.md +74 -0
- package/data/uni-app-x-docs/native/modules/harmony/verify.md +45 -0
- package/data/uni-app-x-docs/native/modules/ios/modules.md +962 -0
- package/data/uni-app-x-docs/native/permission/android_permission_adapter.md +63 -0
- package/data/uni-app-x-docs/native/use/android.md +541 -0
- package/data/uni-app-x-docs/native/use/androidcomm.md +164 -0
- package/data/uni-app-x-docs/native/use/androiduts.md +398 -0
- package/data/uni-app-x-docs/native/use/harmony.md +105 -0
- package/data/uni-app-x-docs/native/use/harmonyapi.md +205 -0
- package/data/uni-app-x-docs/native/use/harmonyuts.md +62 -0
- package/data/uni-app-x-docs/native/use/ios.md +96 -0
- package/data/uni-app-x-docs/native/use/iosapi.md +290 -0
- package/data/uni-app-x-docs/native/use/iosuts.md +89 -0
- package/data/uni-app-x-docs/page.md +503 -0
- package/data/uni-app-x-docs/performance.md +181 -0
- package/data/uni-app-x-docs/plugin/NOTE.md +7 -0
- package/data/uni-app-x-docs/project.md +153 -0
- package/data/uni-app-x-docs/readme.md +401 -0
- package/data/uni-app-x-docs/release-note-alpha.md +2361 -0
- package/data/uni-app-x-docs/release.md +2224 -0
- package/data/uni-app-x-docs/sample.md +157 -0
- package/data/uni-app-x-docs/select/native-render-and-self-render.md +386 -0
- package/data/uni-app-x-docs/select.md +365 -0
- package/data/uni-app-x-docs/static/4050-hello-flatten-optimized-device1-r1.png +0 -0
- package/data/uni-app-x-docs/static/calendar.jpg +0 -0
- package/data/uni-app-x-docs/static/go-to-definition.png +0 -0
- package/data/uni-app-x-docs/static/hxconsolepageperformance.png +0 -0
- package/data/uni-app-x-docs/static/json2type.png +0 -0
- package/data/uni-app-x-docs/static/newproject.png +0 -0
- package/data/uni-app-x-docs/static/playground.jpg +0 -0
- package/data/uni-app-x-docs/static/project-icon.png +0 -0
- package/data/uni-app-x-docs/static/uaxding.png +0 -0
- package/data/uni-app-x-docs/static/view-API-type-info.png +0 -0
- package/data/uni-app-x-docs/tutorial/android-16kb.md +100 -0
- package/data/uni-app-x-docs/tutorial/android-memoryleak.md +553 -0
- package/data/uni-app-x-docs/tutorial/app-env.md +84 -0
- package/data/uni-app-x-docs/tutorial/app-market.md +58 -0
- package/data/uni-app-x-docs/tutorial/app-package.md +196 -0
- package/data/uni-app-x-docs/tutorial/app-playground.md +188 -0
- package/data/uni-app-x-docs/tutorial/app-update-wgt.md +13 -0
- package/data/uni-app-x-docs/tutorial/bug_repair.md +40 -0
- package/data/uni-app-x-docs/tutorial/codegap.md +291 -0
- package/data/uni-app-x-docs/tutorial/compatibility.md +120 -0
- package/data/uni-app-x-docs/tutorial/compliance.md +833 -0
- package/data/uni-app-x-docs/tutorial/debug/devtools.md +137 -0
- package/data/uni-app-x-docs/tutorial/idref.md +126 -0
- package/data/uni-app-x-docs/tutorial/ls-plugin.md +186 -0
- package/data/uni-app-x-docs/tutorial/request.md +321 -0
- package/data/uni-app-x-docs/tutorial/rules_mcp.md +123 -0
- package/data/uni-app-x-docs/tutorial/stickynestlist.md +68 -0
- package/data/uni-app-x-docs/tutorial/store.md +161 -0
- package/data/uni-app-x-docs/uniapptox.md +145 -0
- package/data/uni-app-x-docs/uts/README.md +458 -0
- package/data/uni-app-x-docs/uts/_sidebar.md +57 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/array.md +981 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/arraybuffer.md +257 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/console.md +208 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/dataview.md +304 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/date.md +707 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/error.md +31 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/float32array.md +485 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/float64array.md +473 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/global.md +222 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/int16array.md +455 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/int32array.md +483 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/int8array.md +473 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/json.md +236 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/map.md +187 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/math.md +502 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/number.md +363 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/promise.md +265 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/regexp.md +263 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/set.md +170 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/string.md +723 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/textdecoder.md +70 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/textencoder.md +41 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/timers.md +99 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/uint16array.md +483 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/uint32array.md +484 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/uint8array.md +483 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/uint8clampedarray.md +483 -0
- package/data/uni-app-x-docs/uts/buildin-object-api/utsjsonobject.md +361 -0
- package/data/uni-app-x-docs/uts/class.md +504 -0
- package/data/uni-app-x-docs/uts/compiler-known-issues.md +1242 -0
- package/data/uni-app-x-docs/uts/conditional.md +209 -0
- package/data/uni-app-x-docs/uts/data-type.md +2248 -0
- package/data/uni-app-x-docs/uts/enumerability.md +16 -0
- package/data/uni-app-x-docs/uts/enumerability_iterable.md +211 -0
- package/data/uni-app-x-docs/uts/exception.md +25 -0
- package/data/uni-app-x-docs/uts/function.md +359 -0
- package/data/uni-app-x-docs/uts/generics.md +251 -0
- package/data/uni-app-x-docs/uts/interface.md +37 -0
- package/data/uni-app-x-docs/uts/iterable.md +150 -0
- package/data/uni-app-x-docs/uts/keywords.md +436 -0
- package/data/uni-app-x-docs/uts/literal.md +252 -0
- package/data/uni-app-x-docs/uts/loops.md +240 -0
- package/data/uni-app-x-docs/uts/module.md +92 -0
- package/data/uni-app-x-docs/uts/object.md +156 -0
- package/data/uni-app-x-docs/uts/operator.md +304 -0
- package/data/uni-app-x-docs/uts/runtime-known-issues.md +99 -0
- package/data/uni-app-x-docs/uts/type-aliases.md +43 -0
- package/data/uni-app-x-docs/uts/type-compatibility.md +133 -0
- package/data/uni-app-x-docs/uts/uts-optimize.md +33 -0
- package/data/uni-app-x-docs/uts/uts_diff_ts.md +2292 -0
- package/data/uni-app-x-docs/uts/utsactivitycallback.md +1357 -0
- package/data/uni-app-x-docs/uts/utsandroid.md +850 -0
- package/data/uni-app-x-docs/uts/utsandroidhookproxy.md +17 -0
- package/data/uni-app-x-docs/uts/utsharmony.md +219 -0
- package/data/uni-app-x-docs/uts/utsios.md +305 -0
- package/data/uni-app-x-docs/uts/utsioshookproxy.md +148 -0
- package/data/uni-app-x-docs/vapor-benchmark.md +11 -0
- package/data/uni-app-x-docs/vue/README.md +588 -0
- package/data/uni-app-x-docs/vue/_sidebar.md +10 -0
- package/data/uni-app-x-docs/vue/advanced-api.md +138 -0
- package/data/uni-app-x-docs/vue/built-in.md +741 -0
- package/data/uni-app-x-docs/vue/component.md +704 -0
- package/data/uni-app-x-docs/vue/composition-api.md +779 -0
- package/data/uni-app-x-docs/vue/data-bind.md +163 -0
- package/data/uni-app-x-docs/vue/global-api.md +109 -0
- package/data/uni-app-x-docs/vue/modifier.md +202 -0
- package/data/uni-app-x-docs/vue/options-api.md +512 -0
- package/data/uni-app-x-docs/vue/others.md +20 -0
- package/data/uni-app-x-docs/web/README.md +279 -0
- package/data/uni-app-x-docs/web/ssr.md +290 -0
- package/data/uni-app-x-docs/worktile/NOTE.md +7 -0
- package/data/uniappx/404.md +2 -0
- package/data/uniappx/_sidebar.md +140 -0
- package/data/uniappx/adapt.md +165 -0
- package/data/uniappx/ai/NOTE.md +5 -0
- package/data/uniappx/api/README.md +98 -0
- package/data/uniappx/api/_sidebar.md +165 -0
- package/data/uniappx/api/accelerometer.md +322 -0
- package/data/uniappx/api/action-sheet.md +192 -0
- package/data/uniappx/api/animation-frame.md +125 -0
- package/data/uniappx/api/app-route.md +632 -0
- package/data/uniappx/api/authentication.md +267 -0
- package/data/uniappx/api/base64.md +127 -0
- package/data/uniappx/api/bio-auth.md +3 -0
- package/data/uniappx/api/calendar.md +400 -0
- package/data/uniappx/api/canvas-get-image-data.md +3 -0
- package/data/uniappx/api/canvas-put-image-data.md +3 -0
- package/data/uniappx/api/canvas-to-temp-file-path.md +62 -0
- package/data/uniappx/api/canvasrenderingcontext2d.md +128 -0
- package/data/uniappx/api/capture-screen.md +173 -0
- package/data/uniappx/api/capturescreen.md +3 -0
- package/data/uniappx/api/choose-file.md +174 -0
- package/data/uniappx/api/choose-image.md +312 -0
- package/data/uniappx/api/choose-location.md +412 -0
- package/data/uniappx/api/choose-media.md +272 -0
- package/data/uniappx/api/choose-video.md +165 -0
- package/data/uniappx/api/clipboard.md +155 -0
- package/data/uniappx/api/compass.md +351 -0
- package/data/uniappx/api/compress-image.md +147 -0
- package/data/uniappx/api/compress-video.md +136 -0
- package/data/uniappx/api/connect-event-source.md +225 -0
- package/data/uniappx/api/contact.md +153 -0
- package/data/uniappx/api/create-camera-context.md +346 -0
- package/data/uniappx/api/create-canvas-context-async.md +167 -0
- package/data/uniappx/api/create-editor-context-async.md +605 -0
- package/data/uniappx/api/create-inner-audio-context.md +704 -0
- package/data/uniappx/api/create-intersection-observer.md +195 -0
- package/data/uniappx/api/create-interstitial-ad.md +253 -0
- package/data/uniappx/api/create-live-player-context.md +185 -0
- package/data/uniappx/api/create-live-pusher-context.md +282 -0
- package/data/uniappx/api/create-map-context.md +677 -0
- package/data/uniappx/api/create-request-permission-listener.md +147 -0
- package/data/uniappx/api/create-rewarded-video-ad.md +302 -0
- package/data/uniappx/api/create-selector-query.md +609 -0
- package/data/uniappx/api/create-video-context.md +190 -0
- package/data/uniappx/api/create-webview-context.md +274 -0
- package/data/uniappx/api/create-worker.md +607 -0
- package/data/uniappx/api/dialog-page.md +377 -0
- package/data/uniappx/api/dom/README.md +319 -0
- package/data/uniappx/api/dom/cssstyledeclaration.md +341 -0
- package/data/uniappx/api/dom/domrect.md +30 -0
- package/data/uniappx/api/dom/drawablecontext.md +63 -0
- package/data/uniappx/api/dom/element.md +3 -0
- package/data/uniappx/api/dom/unicanvaselement.md +29 -0
- package/data/uniappx/api/dom/unielement.md +211 -0
- package/data/uniappx/api/dom/uniimageelement.md +23 -0
- package/data/uniappx/api/dom/uniinputelement.md +25 -0
- package/data/uniappx/api/dom/uninativeviewelement.md +18 -0
- package/data/uniappx/api/dom/uniresizeobserver.md +20 -0
- package/data/uniappx/api/dom/unitextareaelement.md +25 -0
- package/data/uniappx/api/dom/unitextelement.md +23 -0
- package/data/uniappx/api/dom/univideoelement.md +18 -0
- package/data/uniappx/api/dom/uniwebviewelement.md +18 -0
- package/data/uniappx/api/download-file.md +226 -0
- package/data/uniappx/api/env.md +101 -0
- package/data/uniappx/api/event-bus.md +184 -0
- package/data/uniappx/api/exit.md +134 -0
- package/data/uniappx/api/ext.md +61 -0
- package/data/uniappx/api/facial-recognition-meta-info.md +131 -0
- package/data/uniappx/api/facial-recognition-verify.md +3 -0
- package/data/uniappx/api/file-system-spec.md +223 -0
- package/data/uniappx/api/get-accessibility-info.md +113 -0
- package/data/uniappx/api/get-app-authorize-setting.md +276 -0
- package/data/uniappx/api/get-app-base-info.md +175 -0
- package/data/uniappx/api/get-app.md +175 -0
- package/data/uniappx/api/get-background-audio-manager.md +509 -0
- package/data/uniappx/api/get-battery-info.md +106 -0
- package/data/uniappx/api/get-current-pages.md +215 -0
- package/data/uniappx/api/get-device-info.md +188 -0
- package/data/uniappx/api/get-element-by-id.md +103 -0
- package/data/uniappx/api/get-element.md +3 -0
- package/data/uniappx/api/get-file-system-manager.md +2351 -0
- package/data/uniappx/api/get-image-info.md +143 -0
- package/data/uniappx/api/get-launch-options-sync.md +3 -0
- package/data/uniappx/api/get-location.md +362 -0
- package/data/uniappx/api/get-network-type.md +96 -0
- package/data/uniappx/api/get-performance.md +299 -0
- package/data/uniappx/api/get-provider.md +3 -0
- package/data/uniappx/api/get-recorder-manager.md +408 -0
- package/data/uniappx/api/get-system-info.md +527 -0
- package/data/uniappx/api/get-system-setting.md +133 -0
- package/data/uniappx/api/get-univerify-manager.md +549 -0
- package/data/uniappx/api/get-video-info.md +150 -0
- package/data/uniappx/api/get-window-info.md +163 -0
- package/data/uniappx/api/gyroscope.md +389 -0
- package/data/uniappx/api/image.md +40 -0
- package/data/uniappx/api/install-apk.md +93 -0
- package/data/uniappx/api/interceptor.md +84 -0
- package/data/uniappx/api/is-simulator.md +120 -0
- package/data/uniappx/api/keyboard.md +194 -0
- package/data/uniappx/api/launch.md +200 -0
- package/data/uniappx/api/load-font-face.md +206 -0
- package/data/uniappx/api/loading.md +186 -0
- package/data/uniappx/api/locale.md +74 -0
- package/data/uniappx/api/location-change.md +533 -0
- package/data/uniappx/api/make-phone-call.md +102 -0
- package/data/uniappx/api/memory.md +135 -0
- package/data/uniappx/api/modal.md +233 -0
- package/data/uniappx/api/navigator-bar-loading.md +122 -0
- package/data/uniappx/api/navigator.md +478 -0
- package/data/uniappx/api/network-status-change.md +145 -0
- package/data/uniappx/api/network-summarize.md +40 -0
- package/data/uniappx/api/nodes-info.md +3 -0
- package/data/uniappx/api/on-tab-bar-mid-button-tap.md +34 -0
- package/data/uniappx/api/open-app-authorize-setting.md +117 -0
- package/data/uniappx/api/open-document.md +122 -0
- package/data/uniappx/api/open-location.md +154 -0
- package/data/uniappx/api/page-scroll-to.md +170 -0
- package/data/uniappx/api/path2d.md +48 -0
- package/data/uniappx/api/preview-image.md +341 -0
- package/data/uniappx/api/privacy.md +232 -0
- package/data/uniappx/api/provider.md +329 -0
- package/data/uniappx/api/pull-down-refresh.md +154 -0
- package/data/uniappx/api/push.md +1 -0
- package/data/uniappx/api/report.md +150 -0
- package/data/uniappx/api/request-merchant-transfer.md +117 -0
- package/data/uniappx/api/request-payment.md +315 -0
- package/data/uniappx/api/request-system-permission.md +220 -0
- package/data/uniappx/api/request.md +518 -0
- package/data/uniappx/api/rpx2px.md +94 -0
- package/data/uniappx/api/save-image-to-photos-album.md +115 -0
- package/data/uniappx/api/save-video-to-photos-album.md +102 -0
- package/data/uniappx/api/scan-code.md +118 -0
- package/data/uniappx/api/screen-brightness.md +333 -0
- package/data/uniappx/api/set-navigation-bar-color.md +133 -0
- package/data/uniappx/api/set-navigation-bar-title.md +117 -0
- package/data/uniappx/api/set-tab-bar.md +651 -0
- package/data/uniappx/api/set-tabbar.md +3 -0
- package/data/uniappx/api/share-with-system.md +139 -0
- package/data/uniappx/api/share.md +325 -0
- package/data/uniappx/api/show-action-sheet.md +3 -0
- package/data/uniappx/api/show-loading.md +3 -0
- package/data/uniappx/api/show-modal.md +3 -0
- package/data/uniappx/api/show-toast.md +3 -0
- package/data/uniappx/api/sign-in.md +358 -0
- package/data/uniappx/api/storage.md +719 -0
- package/data/uniappx/api/theme-change.md +742 -0
- package/data/uniappx/api/theme.md +3 -0
- package/data/uniappx/api/toast.md +180 -0
- package/data/uniappx/api/uni-push.md +513 -0
- package/data/uniappx/api/unicloud/README.md +87 -0
- package/data/uniappx/api/unicloud/database.md +1028 -0
- package/data/uniappx/api/unicloud/function.md +83 -0
- package/data/uniappx/api/unicloud/object.md +138 -0
- package/data/uniappx/api/unicloud/sse-channel.md +92 -0
- package/data/uniappx/api/unicloud/storage.md +204 -0
- package/data/uniappx/api/unicloud/utils.md +153 -0
- package/data/uniappx/api/unipage.md +263 -0
- package/data/uniappx/api/upload-file.md +233 -0
- package/data/uniappx/api/vibrate.md +177 -0
- package/data/uniappx/api/virtual-payment.md +517 -0
- package/data/uniappx/api/websocket-global.md +3 -0
- package/data/uniappx/api/websocket.md +562 -0
- package/data/uniappx/api/wide-screen-adaptation.md +433 -0
- package/data/uniappx/api/wifi.md +508 -0
- package/data/uniappx/api/window.md +88 -0
- package/data/uniappx/app-harmony/README.md +74 -0
- package/data/uniappx/app-harmony/harmony-vapor.md +3 -0
- package/data/uniappx/app-vapor.md +583 -0
- package/data/uniappx/benchmark/vapor-benchmark-android.md +483 -0
- package/data/uniappx/benchmark/vapor-benchmark-harmony.md +309 -0
- package/data/uniappx/benchmark/vapor-benchmark-ios.md +373 -0
- package/data/uniappx/collocation/_sidebar.md +15 -0
- package/data/uniappx/collocation/app.md +375 -0
- package/data/uniappx/collocation/manifest-android.md +1289 -0
- package/data/uniappx/collocation/manifest-harmony.md +152 -0
- package/data/uniappx/collocation/manifest-ios.md +710 -0
- package/data/uniappx/collocation/manifest-modules.md +508 -0
- package/data/uniappx/collocation/manifest-splashscreen.md +227 -0
- package/data/uniappx/collocation/manifest.md +745 -0
- package/data/uniappx/collocation/pagesjson.md +790 -0
- package/data/uniappx/collocation/themejson.md +176 -0
- package/data/uniappx/compiler/README.md +121 -0
- package/data/uniappx/compiler/_sidebar.md +4 -0
- package/data/uniappx/component/README.md +206 -0
- package/data/uniappx/component/_sidebar.md +118 -0
- package/data/uniappx/component/ad-custom.md +29 -0
- package/data/uniappx/component/ad.md +124 -0
- package/data/uniappx/component/animation-view.md +51 -0
- package/data/uniappx/component/aria-component.md +21 -0
- package/data/uniappx/component/audio.md +4 -0
- package/data/uniappx/component/block.md +26 -0
- package/data/uniappx/component/button.md +298 -0
- package/data/uniappx/component/camera.md +303 -0
- package/data/uniappx/component/canvas.md +230 -0
- package/data/uniappx/component/channel-live.md +27 -0
- package/data/uniappx/component/channel-video.md +38 -0
- package/data/uniappx/component/checkbox-group.md +56 -0
- package/data/uniappx/component/checkbox.md +247 -0
- package/data/uniappx/component/common.md +637 -0
- package/data/uniappx/component/cover-image.md +42 -0
- package/data/uniappx/component/cover-view.md +93 -0
- package/data/uniappx/component/custom-tab-bar.md +36 -0
- package/data/uniappx/component/double-tap-gesture-handler.md +36 -0
- package/data/uniappx/component/draggable-sheet.md +31 -0
- package/data/uniappx/component/editor.md +329 -0
- package/data/uniappx/component/flow-item.md +3 -0
- package/data/uniappx/component/force-press-gesture-handler.md +36 -0
- package/data/uniappx/component/form.md +378 -0
- package/data/uniappx/component/functional-page-navigator.md +43 -0
- package/data/uniappx/component/glass-effect-view.md +217 -0
- package/data/uniappx/component/grid-builder.md +39 -0
- package/data/uniappx/component/grid-view.md +35 -0
- package/data/uniappx/component/horizontal-drag-gesture-handler.md +40 -0
- package/data/uniappx/component/icon.md +41 -0
- package/data/uniappx/component/image.md +264 -0
- package/data/uniappx/component/input.md +899 -0
- package/data/uniappx/component/keyboard-accessory.md +21 -0
- package/data/uniappx/component/label.md +135 -0
- package/data/uniappx/component/list-builder.md +36 -0
- package/data/uniappx/component/list-item.md +1 -0
- package/data/uniappx/component/list-view.md +508 -0
- package/data/uniappx/component/live-player.md +267 -0
- package/data/uniappx/component/live-pusher.md +343 -0
- package/data/uniappx/component/loading.md +309 -0
- package/data/uniappx/component/long-press-gesture-handler.md +40 -0
- package/data/uniappx/component/map.md +381 -0
- package/data/uniappx/component/match-media.md +132 -0
- package/data/uniappx/component/movable-area.md +37 -0
- package/data/uniappx/component/movable-view.md +157 -0
- package/data/uniappx/component/native-component.md +21 -0
- package/data/uniappx/component/native-view.md +342 -0
- package/data/uniappx/component/navigation-bar.md +44 -0
- package/data/uniappx/component/navigator.md +143 -0
- package/data/uniappx/component/nested-scroll-body.md +122 -0
- package/data/uniappx/component/nested-scroll-header.md +121 -0
- package/data/uniappx/component/nested-scroll.md +6 -0
- package/data/uniappx/component/official-account.md +21 -0
- package/data/uniappx/component/open-container.md +38 -0
- package/data/uniappx/component/page-container.md +386 -0
- package/data/uniappx/component/page-meta.md +79 -0
- package/data/uniappx/component/pan-gesture-handler.md +40 -0
- package/data/uniappx/component/picker-view-column.md +3 -0
- package/data/uniappx/component/picker-view.md +180 -0
- package/data/uniappx/component/picker.md +370 -0
- package/data/uniappx/component/progress.md +163 -0
- package/data/uniappx/component/radio-group.md +56 -0
- package/data/uniappx/component/radio.md +218 -0
- package/data/uniappx/component/rich-text.md +244 -0
- package/data/uniappx/component/root-portal.md +26 -0
- package/data/uniappx/component/scale-gesture-handler.md +45 -0
- package/data/uniappx/component/scroll-view.md +556 -0
- package/data/uniappx/component/share-element.md +221 -0
- package/data/uniappx/component/slider.md +232 -0
- package/data/uniappx/component/snapshot.md +30 -0
- package/data/uniappx/component/span.md +21 -0
- package/data/uniappx/component/sticky-header.md +138 -0
- package/data/uniappx/component/sticky-section.md +152 -0
- package/data/uniappx/component/sticky.md +6 -0
- package/data/uniappx/component/store-home.md +26 -0
- package/data/uniappx/component/store-product.md +28 -0
- package/data/uniappx/component/swiper-item.md +3 -0
- package/data/uniappx/component/swiper.md +344 -0
- package/data/uniappx/component/switch.md +183 -0
- package/data/uniappx/component/tap-gesture-handler.md +36 -0
- package/data/uniappx/component/text.md +384 -0
- package/data/uniappx/component/textarea.md +599 -0
- package/data/uniappx/component/uni-ui-x/README.md +165 -0
- package/data/uniappx/component/uni-ui-x/uni-badge-view.md +260 -0
- package/data/uniappx/component/uni-ui-x/uni-collapse-item.md +3 -0
- package/data/uniappx/component/uni-ui-x/uni-collapse.md +652 -0
- package/data/uniappx/component/uni-ui-x/uni-drag-cell.md +782 -0
- package/data/uniappx/component/uni-ui-x/uni-fab-button.md +137 -0
- package/data/uniappx/component/uni-ui-x/uni-index-bar.md +224 -0
- package/data/uniappx/component/uni-ui-x/uni-link.md +190 -0
- package/data/uniappx/component/uni-ui-x/uni-nav-bar.md +173 -0
- package/data/uniappx/component/uni-ui-x/uni-number-box.md +234 -0
- package/data/uniappx/component/uni-ui-x/uni-rate.md +151 -0
- package/data/uniappx/component/uni-ui-x/uni-refresh-box.md +250 -0
- package/data/uniappx/component/uni-ui-x/uni-tab-bar.md +3 -0
- package/data/uniappx/component/uni-ui-x/uni-tab-content.md +3 -0
- package/data/uniappx/component/uni-ui-x/uni-tab-item.md +3 -0
- package/data/uniappx/component/uni-ui-x/uni-tab-midbutton.md +3 -0
- package/data/uniappx/component/uni-ui-x/uni-tab.md +1203 -0
- package/data/uniappx/component/uni-ui-x/uni-time-format.md +213 -0
- package/data/uniappx/component/unicloud-db.md +270 -0
- package/data/uniappx/component/vertical-drag-gesture-handler.md +40 -0
- package/data/uniappx/component/video.md +630 -0
- package/data/uniappx/component/view.md +216 -0
- package/data/uniappx/component/voip-room.md +43 -0
- package/data/uniappx/component/waterflow.md +407 -0
- package/data/uniappx/component/web-view.md +449 -0
- package/data/uniappx/css/README.md +436 -0
- package/data/uniappx/css/_sidebar.md +103 -0
- package/data/uniappx/css/align-content.md +338 -0
- package/data/uniappx/css/align-items.md +276 -0
- package/data/uniappx/css/align-self.md +291 -0
- package/data/uniappx/css/animation-composition.md +33 -0
- package/data/uniappx/css/animation-delay.md +26 -0
- package/data/uniappx/css/animation-direction.md +34 -0
- package/data/uniappx/css/animation-duration.md +31 -0
- package/data/uniappx/css/animation-fill-mode.md +34 -0
- package/data/uniappx/css/animation-iteration-count.md +31 -0
- package/data/uniappx/css/animation-name.md +31 -0
- package/data/uniappx/css/animation-play-state.md +32 -0
- package/data/uniappx/css/animation-range-end.md +26 -0
- package/data/uniappx/css/animation-range-start.md +26 -0
- package/data/uniappx/css/animation-range.md +34 -0
- package/data/uniappx/css/animation-timeline.md +34 -0
- package/data/uniappx/css/animation-timing-function.md +45 -0
- package/data/uniappx/css/animation.md +36 -0
- package/data/uniappx/css/backdrop-filter.md +255 -0
- package/data/uniappx/css/background-clip.md +36 -0
- package/data/uniappx/css/background-color.md +353 -0
- package/data/uniappx/css/background-image.md +152 -0
- package/data/uniappx/css/background.md +35 -0
- package/data/uniappx/css/border-bottom-color.md +39 -0
- package/data/uniappx/css/border-bottom-left-radius.md +33 -0
- package/data/uniappx/css/border-bottom-right-radius.md +33 -0
- package/data/uniappx/css/border-bottom-style.md +37 -0
- package/data/uniappx/css/border-bottom-width.md +44 -0
- package/data/uniappx/css/border-bottom.md +201 -0
- package/data/uniappx/css/border-color.md +284 -0
- package/data/uniappx/css/border-left-color.md +34 -0
- package/data/uniappx/css/border-left-style.md +37 -0
- package/data/uniappx/css/border-left-width.md +44 -0
- package/data/uniappx/css/border-left.md +200 -0
- package/data/uniappx/css/border-radius.md +391 -0
- package/data/uniappx/css/border-right-color.md +34 -0
- package/data/uniappx/css/border-right-style.md +37 -0
- package/data/uniappx/css/border-right-width.md +44 -0
- package/data/uniappx/css/border-right.md +201 -0
- package/data/uniappx/css/border-style.md +271 -0
- package/data/uniappx/css/border-top-color.md +34 -0
- package/data/uniappx/css/border-top-left-radius.md +33 -0
- package/data/uniappx/css/border-top-right-radius.md +33 -0
- package/data/uniappx/css/border-top-style.md +37 -0
- package/data/uniappx/css/border-top-width.md +44 -0
- package/data/uniappx/css/border-top.md +201 -0
- package/data/uniappx/css/border-width.md +415 -0
- package/data/uniappx/css/border.md +302 -0
- package/data/uniappx/css/bottom.md +259 -0
- package/data/uniappx/css/box-shadow.md +879 -0
- package/data/uniappx/css/box-sizing.md +353 -0
- package/data/uniappx/css/color.md +158 -0
- package/data/uniappx/css/common/at-rules.md +244 -0
- package/data/uniappx/css/common/color.md +40 -0
- package/data/uniappx/css/common/function.md +664 -0
- package/data/uniappx/css/common/length.md +178 -0
- package/data/uniappx/css/common/selector.md +55 -0
- package/data/uniappx/css/common/style-isolation.md +215 -0
- package/data/uniappx/css/common/variable.md +1 -0
- package/data/uniappx/css/direction.md +146 -0
- package/data/uniappx/css/display.md +42 -0
- package/data/uniappx/css/flex-basis.md +306 -0
- package/data/uniappx/css/flex-direction.md +243 -0
- package/data/uniappx/css/flex-flow.md +283 -0
- package/data/uniappx/css/flex-grow.md +318 -0
- package/data/uniappx/css/flex-shrink.md +313 -0
- package/data/uniappx/css/flex-wrap.md +259 -0
- package/data/uniappx/css/flex.md +216 -0
- package/data/uniappx/css/font-family.md +187 -0
- package/data/uniappx/css/font-size.md +176 -0
- package/data/uniappx/css/font-style.md +139 -0
- package/data/uniappx/css/font-weight.md +167 -0
- package/data/uniappx/css/height.md +239 -0
- package/data/uniappx/css/justify-content.md +286 -0
- package/data/uniappx/css/left.md +260 -0
- package/data/uniappx/css/letter-spacing.md +149 -0
- package/data/uniappx/css/line-height.md +173 -0
- package/data/uniappx/css/lines.md +37 -0
- package/data/uniappx/css/margin-bottom.md +281 -0
- package/data/uniappx/css/margin-left.md +281 -0
- package/data/uniappx/css/margin-right.md +278 -0
- package/data/uniappx/css/margin-top.md +274 -0
- package/data/uniappx/css/margin.md +315 -0
- package/data/uniappx/css/max-height.md +242 -0
- package/data/uniappx/css/max-width.md +251 -0
- package/data/uniappx/css/min-height.md +252 -0
- package/data/uniappx/css/min-width.md +243 -0
- package/data/uniappx/css/opacity.md +248 -0
- package/data/uniappx/css/overflow.md +330 -0
- package/data/uniappx/css/padding-bottom.md +241 -0
- package/data/uniappx/css/padding-left.md +234 -0
- package/data/uniappx/css/padding-right.md +242 -0
- package/data/uniappx/css/padding-top.md +234 -0
- package/data/uniappx/css/padding.md +309 -0
- package/data/uniappx/css/pointer-events.md +155 -0
- package/data/uniappx/css/position.md +444 -0
- package/data/uniappx/css/right.md +260 -0
- package/data/uniappx/css/text-align.md +154 -0
- package/data/uniappx/css/text-decoration-color.md +35 -0
- package/data/uniappx/css/text-decoration-line.md +144 -0
- package/data/uniappx/css/text-decoration-style.md +41 -0
- package/data/uniappx/css/text-decoration-thickness.md +39 -0
- package/data/uniappx/css/text-decoration.md +52 -0
- package/data/uniappx/css/text-overflow.md +176 -0
- package/data/uniappx/css/text-shadow.md +146 -0
- package/data/uniappx/css/top.md +258 -0
- package/data/uniappx/css/transform-origin.md +298 -0
- package/data/uniappx/css/transform.md +50 -0
- package/data/uniappx/css/transition-delay.md +253 -0
- package/data/uniappx/css/transition-duration.md +275 -0
- package/data/uniappx/css/transition-property.md +67 -0
- package/data/uniappx/css/transition-timing-function.md +259 -0
- package/data/uniappx/css/transition.md +527 -0
- package/data/uniappx/css/visibility.md +198 -0
- package/data/uniappx/css/white-space.md +162 -0
- package/data/uniappx/css/width.md +300 -0
- package/data/uniappx/css/z-index.md +411 -0
- package/data/uniappx/debug/android-inspector.md +54 -0
- package/data/uniappx/i18n.md +358 -0
- package/data/uniappx/mp/README.md +155 -0
- package/data/uniappx/mp/native-component-and-wxs.md +151 -0
- package/data/uniappx/native/README.md +65 -0
- package/data/uniappx/native/debug/android.md +122 -0
- package/data/uniappx/native/debug/harmony.md +116 -0
- package/data/uniappx/native/debug/ios.md +84 -0
- package/data/uniappx/native/download/android.md +132 -0
- package/data/uniappx/native/download/ios.md +31 -0
- package/data/uniappx/native/modules/android/others.md +1343 -0
- package/data/uniappx/native/modules/android/uni-ad.md +99 -0
- package/data/uniappx/native/modules/android/uni-facialRecognitionVerify.md +69 -0
- package/data/uniappx/native/modules/android/uni-getLocation.md +121 -0
- package/data/uniappx/native/modules/android/uni-map-tencent.md +92 -0
- package/data/uniappx/native/modules/android/uni-oauth.md +57 -0
- package/data/uniappx/native/modules/android/uni-payment.md +110 -0
- package/data/uniappx/native/modules/android/uni-push.md +217 -0
- package/data/uniappx/native/modules/android/uni-share.md +57 -0
- package/data/uniappx/native/modules/android/uni-verify.md +101 -0
- package/data/uniappx/native/modules/android/uni-video.md +125 -0
- package/data/uniappx/native/modules/harmony/facialVerify.md +45 -0
- package/data/uniappx/native/modules/harmony/location.md +43 -0
- package/data/uniappx/native/modules/harmony/map.md +64 -0
- package/data/uniappx/native/modules/harmony/modules.md +23 -0
- package/data/uniappx/native/modules/harmony/oauth.md +47 -0
- package/data/uniappx/native/modules/harmony/pay.md +85 -0
- package/data/uniappx/native/modules/harmony/push.md +74 -0
- package/data/uniappx/native/modules/harmony/verify.md +45 -0
- package/data/uniappx/native/modules/ios/modules.md +943 -0
- package/data/uniappx/native/permission/android_permission_adapter.md +62 -0
- package/data/uniappx/native/use/android.md +521 -0
- package/data/uniappx/native/use/androidcomm.md +104 -0
- package/data/uniappx/native/use/androiduts.md +388 -0
- package/data/uniappx/native/use/harmony.md +99 -0
- package/data/uniappx/native/use/harmonyapi.md +190 -0
- package/data/uniappx/native/use/harmonyuts.md +62 -0
- package/data/uniappx/native/use/ios.md +90 -0
- package/data/uniappx/native/use/iosapi.md +288 -0
- package/data/uniappx/native/use/iosuts.md +87 -0
- package/data/uniappx/page.md +488 -0
- package/data/uniappx/performance.md +175 -0
- package/data/uniappx/plugin/NOTE.md +5 -0
- package/data/uniappx/project.md +148 -0
- package/data/uniappx/readme.md +381 -0
- package/data/uniappx/release-note-alpha.md +2361 -0
- package/data/uniappx/release.md +2224 -0
- package/data/uniappx/sample.md +157 -0
- package/data/uniappx/select/native-render-and-self-render.md +382 -0
- package/data/uniappx/select.md +3 -0
- package/data/uniappx/tutorial/android-16kb.md +91 -0
- package/data/uniappx/tutorial/android-memoryleak.md +542 -0
- package/data/uniappx/tutorial/app-env.md +80 -0
- package/data/uniappx/tutorial/app-market.md +51 -0
- package/data/uniappx/tutorial/app-package.md +195 -0
- package/data/uniappx/tutorial/app-playground.md +188 -0
- package/data/uniappx/tutorial/app-update-wgt.md +9 -0
- package/data/uniappx/tutorial/bug_repair.md +40 -0
- package/data/uniappx/tutorial/codegap.md +223 -0
- package/data/uniappx/tutorial/compatibility.md +119 -0
- package/data/uniappx/tutorial/compliance.md +671 -0
- package/data/uniappx/tutorial/debug/devtools.md +134 -0
- package/data/uniappx/tutorial/idref.md +121 -0
- package/data/uniappx/tutorial/ls-plugin.md +181 -0
- package/data/uniappx/tutorial/request.md +204 -0
- package/data/uniappx/tutorial/rules_mcp.md +121 -0
- package/data/uniappx/tutorial/stickynestlist.md +68 -0
- package/data/uniappx/tutorial/store.md +130 -0
- package/data/uniappx/uniapptox.md +145 -0
- package/data/uniappx/uts/README.md +443 -0
- package/data/uniappx/uts/_sidebar.md +55 -0
- package/data/uniappx/uts/buildin-object-api/array.md +2265 -0
- package/data/uniappx/uts/buildin-object-api/arraybuffer.md +480 -0
- package/data/uniappx/uts/buildin-object-api/console.md +520 -0
- package/data/uniappx/uts/buildin-object-api/dataview.md +853 -0
- package/data/uniappx/uts/buildin-object-api/date.md +1534 -0
- package/data/uniappx/uts/buildin-object-api/error.md +30 -0
- package/data/uniappx/uts/buildin-object-api/float32array.md +581 -0
- package/data/uniappx/uts/buildin-object-api/float64array.md +626 -0
- package/data/uniappx/uts/buildin-object-api/global.md +600 -0
- package/data/uniappx/uts/buildin-object-api/int16array.md +1069 -0
- package/data/uniappx/uts/buildin-object-api/int32array.md +1137 -0
- package/data/uniappx/uts/buildin-object-api/int8array.md +1166 -0
- package/data/uniappx/uts/buildin-object-api/json.md +407 -0
- package/data/uniappx/uts/buildin-object-api/map.md +479 -0
- package/data/uniappx/uts/buildin-object-api/math.md +1525 -0
- package/data/uniappx/uts/buildin-object-api/number.md +852 -0
- package/data/uniappx/uts/buildin-object-api/promise.md +1444 -0
- package/data/uniappx/uts/buildin-object-api/regexp.md +534 -0
- package/data/uniappx/uts/buildin-object-api/set.md +317 -0
- package/data/uniappx/uts/buildin-object-api/string.md +1604 -0
- package/data/uniappx/uts/buildin-object-api/textdecoder.md +133 -0
- package/data/uniappx/uts/buildin-object-api/textencoder.md +60 -0
- package/data/uniappx/uts/buildin-object-api/timers.md +145 -0
- package/data/uniappx/uts/buildin-object-api/uint16array.md +1154 -0
- package/data/uniappx/uts/buildin-object-api/uint32array.md +1165 -0
- package/data/uniappx/uts/buildin-object-api/uint8array.md +1146 -0
- package/data/uniappx/uts/buildin-object-api/uint8clampedarray.md +1147 -0
- package/data/uniappx/uts/buildin-object-api/utsjsonobject.md +1297 -0
- package/data/uniappx/uts/class.md +462 -0
- package/data/uniappx/uts/compiler-known-issues.md +865 -0
- package/data/uniappx/uts/conditional.md +206 -0
- package/data/uniappx/uts/data-type.md +2242 -0
- package/data/uniappx/uts/enumerability.md +15 -0
- package/data/uniappx/uts/enumerability_iterable.md +200 -0
- package/data/uniappx/uts/exception.md +25 -0
- package/data/uniappx/uts/function.md +358 -0
- package/data/uniappx/uts/generics.md +246 -0
- package/data/uniappx/uts/interface.md +35 -0
- package/data/uniappx/uts/iterable.md +137 -0
- package/data/uniappx/uts/keywords.md +393 -0
- package/data/uniappx/uts/literal.md +216 -0
- package/data/uniappx/uts/loops.md +236 -0
- package/data/uniappx/uts/module.md +92 -0
- package/data/uniappx/uts/object.md +155 -0
- package/data/uniappx/uts/operator.md +295 -0
- package/data/uniappx/uts/runtime-known-issues.md +94 -0
- package/data/uniappx/uts/type-aliases.md +43 -0
- package/data/uniappx/uts/type-compatibility.md +133 -0
- package/data/uniappx/uts/uts-optimize.md +33 -0
- package/data/uniappx/uts/uts_diff_ts.md +2443 -0
- package/data/uniappx/uts/utsactivitycallback.md +3099 -0
- package/data/uniappx/uts/utsandroid.md +1461 -0
- package/data/uniappx/uts/utsandroidhookproxy.md +34 -0
- package/data/uniappx/uts/utsharmony.md +348 -0
- package/data/uniappx/uts/utsios.md +466 -0
- package/data/uniappx/uts/utsioshookproxy.md +374 -0
- package/data/uniappx/vapor-benchmark.md +9 -0
- package/data/uniappx/vue/README.md +313 -0
- package/data/uniappx/vue/_sidebar.md +10 -0
- package/data/uniappx/vue/advanced-api.md +253 -0
- package/data/uniappx/vue/built-in.md +2133 -0
- package/data/uniappx/vue/component.md +1134 -0
- package/data/uniappx/vue/composition-api.md +2085 -0
- package/data/uniappx/vue/data-bind.md +463 -0
- package/data/uniappx/vue/global-api.md +307 -0
- package/data/uniappx/vue/modifier.md +249 -0
- package/data/uniappx/vue/options-api.md +1489 -0
- package/data/uniappx/vue/others.md +20 -0
- package/data/uniappx/web/README.md +263 -0
- package/data/uniappx/web/ssr.md +238 -0
- package/data/uniappx/worktile/NOTE.md +5 -0
- package/data/uniappx-doc-index.json +7692 -0
- package/dist/main.mjs +67 -45
- package/package.json +1 -1
|
@@ -0,0 +1,2292 @@
|
|
|
1
|
+
## uts 和 ts 的差异
|
|
2
|
+
|
|
3
|
+
ts 虽然有类型,但类型要求不严格。而 uts 为了编译为原生语言,是完全的强类型。
|
|
4
|
+
|
|
5
|
+
另外为了确保跨平台、高性能,uts 通过规范约束了 ts 中过于灵活而影响开发正确性或者给运行时带来不必要额外开销的特性。
|
|
6
|
+
|
|
7
|
+
本文罗列了在 uts 跨端开发时限制的 ts 特性,并提供了重构代码的建议。
|
|
8
|
+
|
|
9
|
+
> uni-app x下uts编译器目前[已知的一些问题](./compiler-known-issues.md)
|
|
10
|
+
|
|
11
|
+
> uni-app x下uts常见错误修复建议见[UTS 常见错误修复建议](./uts-optimize.md)
|
|
12
|
+
|
|
13
|
+
> uni-app x下部分[运行错误的说明](./runtime-known-issues.md)
|
|
14
|
+
|
|
15
|
+
### 概述
|
|
16
|
+
|
|
17
|
+
#### 强制使用静态类型
|
|
18
|
+
|
|
19
|
+
静态类型是 uts 最重要的特性之一。如果程序采用静态类型,即所有类型在编译时都是已知的,那么开发者就能够容易理解代码中使用了哪些数据结构。
|
|
20
|
+
同时,由于所有类型在程序实际运行前都是已知的,编译器可以提前验证代码的正确性,从而可以减少运行时的类型检查,有助于提升性能。
|
|
21
|
+
|
|
22
|
+
基于上述考虑,uts 中的 any 类型与 ts 中的 any 并不一样,它是一个根据目标平台自动适配的跨端类型,通常用于表示"任意的非空类型",
|
|
23
|
+
在使用时仍需类型转换后才能访问具体类型的方法和属性。
|
|
24
|
+
|
|
25
|
+
#### 不支持结构化类型系统
|
|
26
|
+
|
|
27
|
+
结构化类型系统(structural typing)是 ts 的一个特性,它意味着类型的兼容性和等价性是基于类型的结构(即它们的属性和方法);
|
|
28
|
+
而在跨端开发时,uts 采用名义类型系统(nominal typing),类型兼容性检查基于类型名称和显式的继承/实现关系。
|
|
29
|
+
即使两个类型具有完全相同的结构,如果没有显式的继承/实现关系,它们也不能互相赋值。
|
|
30
|
+
这与 Kotlin 、Swift 、ArkTS 等静态语言的类型系统保持一致,有助于确保类型安全和代码的可维护性。
|
|
31
|
+
|
|
32
|
+
## 约束说明
|
|
33
|
+
|
|
34
|
+
### 1. 核心语言特性
|
|
35
|
+
|
|
36
|
+
#### 不支持 undefined @uts110111119
|
|
37
|
+
|
|
38
|
+
<!-- UTSDIFFTSJSON.UTS110111119.type -->
|
|
39
|
+
|
|
40
|
+
<!-- UTSDIFFTSJSON.UTS110111119.code -->
|
|
41
|
+
|
|
42
|
+
<!-- UTSDIFFTSJSON.UTS110111119.description -->
|
|
43
|
+
|
|
44
|
+
<!-- UTSDIFFTSJSON.UTS110111119.compatibility -->
|
|
45
|
+
|
|
46
|
+
TypeScript写法:
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
// TypeScript 可以使用 undefined
|
|
50
|
+
let value: string | undefined;
|
|
51
|
+
if (value == undefined) {
|
|
52
|
+
console.log("未定义");
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function test(param?: string) {
|
|
56
|
+
if (param == undefined) {
|
|
57
|
+
console.log("参数未传");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
UTS正确写法:
|
|
63
|
+
|
|
64
|
+
```ts
|
|
65
|
+
// UTS 使用 null 替代 undefined
|
|
66
|
+
let value: string | null = null; //必须先赋值后使用,哪怕赋值为null。否则Android平台会报编译错误:error: Variable 'value' must be initialized
|
|
67
|
+
if (value == null) {
|
|
68
|
+
console.log("未定义");
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function test(param: string | null) {
|
|
72
|
+
if (param == null) {
|
|
73
|
+
console.log("参数未传");
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
#### 条件语句必须使用布尔类型 @uts110111120
|
|
79
|
+
|
|
80
|
+
<!-- UTSDIFFTSJSON.UTS110111120.type -->
|
|
81
|
+
|
|
82
|
+
<!-- UTSDIFFTSJSON.UTS110111120.code -->
|
|
83
|
+
|
|
84
|
+
<!-- UTSDIFFTSJSON.UTS110111120.description -->
|
|
85
|
+
|
|
86
|
+
<!-- UTSDIFFTSJSON.UTS110111120.compatibility -->
|
|
87
|
+
|
|
88
|
+
TypeScript写法:
|
|
89
|
+
|
|
90
|
+
```ts
|
|
91
|
+
// 允许非布尔值在条件语句中使用
|
|
92
|
+
if (1) {
|
|
93
|
+
} // 数值类型
|
|
94
|
+
while ("") {} // 字符串类型
|
|
95
|
+
do {} while (obj); // 对象类型
|
|
96
|
+
for (let i = 0; i; i++) {} // 作为条件的数值类型
|
|
97
|
+
const value = arr || []; // truthy/falsy 值判断
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
UTS正确写法:
|
|
101
|
+
|
|
102
|
+
```ts
|
|
103
|
+
// 必须使用布尔类型或返回布尔值的表达式
|
|
104
|
+
if (x > 0) {
|
|
105
|
+
} // 比较表达式
|
|
106
|
+
while (isValid) {} // 布尔变量
|
|
107
|
+
do {} while (obj != null); // 相等性判断
|
|
108
|
+
for (let i = 0; i < 10; i++) {} // 布尔条件
|
|
109
|
+
const value = arr != null ? arr : []; // 显式的布尔判断
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
#### 对象字面量默认为 UTSJSONObject 类型
|
|
113
|
+
|
|
114
|
+
级别:提示
|
|
115
|
+
|
|
116
|
+
在 UTS 中,所有没有明确类型标注或上下文推断不出具体类型的对象字面量都会被推导为 UTSJSONObject 类型。
|
|
117
|
+
这与 ts 中对象字面量会根据属性推导出具体结构类型的行为不同。
|
|
118
|
+
|
|
119
|
+
TypeScript写法:
|
|
120
|
+
|
|
121
|
+
```ts
|
|
122
|
+
// 类型推导为 { name: string, age: number }
|
|
123
|
+
const person = {
|
|
124
|
+
name: "John",
|
|
125
|
+
age: 30,
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
// 可以正常访问推导出的属性
|
|
129
|
+
console.log(person.name);
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
UTS正确写法:
|
|
133
|
+
|
|
134
|
+
```ts
|
|
135
|
+
// 类型推导为 UTSJSONObject
|
|
136
|
+
const person = {
|
|
137
|
+
name: "John",
|
|
138
|
+
age: 30,
|
|
139
|
+
}; //对象字面量默认推导为UTSJSONObject
|
|
140
|
+
console.log(person["name"] as string); //UTSJSONObject类型不能直接用.运算符,并且下标访问后的每个值都是any类型,想正确使用时需要as为正确的类型
|
|
141
|
+
console.log(person["age"] as number); //UTS提供了有限的隐式转换能力,UTSJSONObject第一层对象如果可以被编译器识别推导类型,也可以使用.运算符。但第二层起无法使用.运算符,需要使用下标
|
|
142
|
+
|
|
143
|
+
// 在UTS中推荐使用type替代UTSJSONObject
|
|
144
|
+
type Person = {
|
|
145
|
+
name: string;
|
|
146
|
+
age: number;
|
|
147
|
+
};
|
|
148
|
+
// 声明时直接指定类型
|
|
149
|
+
const person2: Person = {
|
|
150
|
+
name: "John",
|
|
151
|
+
age: 30,
|
|
152
|
+
};
|
|
153
|
+
console.log(person2.name);
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
在 JSON.parse 的场景中,如果不通过泛型指定 type,那么返回值也是 UTSJSONObject。
|
|
157
|
+
|
|
158
|
+
TS 开发者一般都熟悉使用 interface 来声明类型,UTS 中改为 type 即可。但不熟悉 TS 的开发者,务必需要详细了解[UTSJSONObject](./data-type.md#UTSJSONObject)和[type](./data-type.md#type自定义类型)
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
#### 对象字面量仅支持构造 type 定义的对象类型,不支持 interface @uts110111163
|
|
162
|
+
|
|
163
|
+
<!-- UTSDIFFTSJSON.UTS110111163.type -->
|
|
164
|
+
|
|
165
|
+
<!-- UTSDIFFTSJSON.UTS110111163.code -->
|
|
166
|
+
|
|
167
|
+
<!-- UTSDIFFTSJSON.UTS110111163.description -->
|
|
168
|
+
|
|
169
|
+
<!-- UTSDIFFTSJSON.UTS110111163.compatibility -->
|
|
170
|
+
|
|
171
|
+
TypeScript写法:
|
|
172
|
+
|
|
173
|
+
```ts
|
|
174
|
+
interface Person {
|
|
175
|
+
name: string;
|
|
176
|
+
age: number;
|
|
177
|
+
}
|
|
178
|
+
// 对象字面量可以赋值 interface 类型
|
|
179
|
+
const person: Person = {
|
|
180
|
+
name: "John",
|
|
181
|
+
age: 30,
|
|
182
|
+
};
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
UTS正确写法:
|
|
186
|
+
|
|
187
|
+
```ts
|
|
188
|
+
// 只有 type 定义的对象类型,才可以用对象字面量赋值
|
|
189
|
+
type Person = {
|
|
190
|
+
name: string;
|
|
191
|
+
age: number;
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
// 声明时直接指定类型
|
|
195
|
+
const person1: Person = {
|
|
196
|
+
name: "John",
|
|
197
|
+
age: 30,
|
|
198
|
+
};
|
|
199
|
+
// 使用对象字面量 as 语法
|
|
200
|
+
const person2 = {
|
|
201
|
+
name: "John",
|
|
202
|
+
age: 30,
|
|
203
|
+
} as Person;
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
#### 不支持变量和函数的声明提升 (hoisting) @uts110111150
|
|
207
|
+
|
|
208
|
+
<!-- UTSDIFFTSJSON.UTS110111150.type -->
|
|
209
|
+
|
|
210
|
+
<!-- UTSDIFFTSJSON.UTS110111150.code -->
|
|
211
|
+
|
|
212
|
+
<!-- UTSDIFFTSJSON.UTS110111150.description -->
|
|
213
|
+
|
|
214
|
+
<!-- UTSDIFFTSJSON.UTS110111150.compatibility -->
|
|
215
|
+
|
|
216
|
+
TypeScript写法:
|
|
217
|
+
|
|
218
|
+
```ts
|
|
219
|
+
// 变量提升
|
|
220
|
+
console.log(x); // undefined (不会报错)
|
|
221
|
+
var x = 5;
|
|
222
|
+
|
|
223
|
+
// 函数提升
|
|
224
|
+
foo(); // "hello" (可以在声明前调用)
|
|
225
|
+
function foo() {
|
|
226
|
+
console.log("hello");
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// 可以访问自身
|
|
230
|
+
const factorial = (n: number): number => {
|
|
231
|
+
if (n <= 1) return 1;
|
|
232
|
+
return n * factorial(n - 1); // 可以在函数内部调用自身
|
|
233
|
+
};
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
UTS正确写法:
|
|
237
|
+
|
|
238
|
+
```ts
|
|
239
|
+
// 变量必须先声明后使用
|
|
240
|
+
let x = 5;
|
|
241
|
+
console.log(x);
|
|
242
|
+
function foo() {
|
|
243
|
+
console.log("hello");
|
|
244
|
+
}
|
|
245
|
+
// 函数必须先声明后调用
|
|
246
|
+
foo();
|
|
247
|
+
|
|
248
|
+
// 需要先声明函数变量
|
|
249
|
+
let factorial: ((n: number) => number) | null = null;
|
|
250
|
+
factorial = (n: number): number => {
|
|
251
|
+
if (n <= 1) return 1;
|
|
252
|
+
return n * factorial!(n - 1);
|
|
253
|
+
};
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
#### 使用 let 而非 var @uts110111121
|
|
257
|
+
|
|
258
|
+
<!-- UTSDIFFTSJSON.UTS110111121.type -->
|
|
259
|
+
|
|
260
|
+
<!-- UTSDIFFTSJSON.UTS110111121.code -->
|
|
261
|
+
|
|
262
|
+
<!-- UTSDIFFTSJSON.UTS110111121.description -->
|
|
263
|
+
|
|
264
|
+
<!-- UTSDIFFTSJSON.UTS110111121.compatibility -->
|
|
265
|
+
|
|
266
|
+
### 2. 类型系统相关
|
|
267
|
+
|
|
268
|
+
#### 对象字面量不能用于类型声明 @uts110111101
|
|
269
|
+
|
|
270
|
+
<!-- UTSDIFFTSJSON.UTS110111101.type -->
|
|
271
|
+
|
|
272
|
+
<!-- UTSDIFFTSJSON.UTS110111101.code -->
|
|
273
|
+
|
|
274
|
+
<!-- UTSDIFFTSJSON.UTS110111101.description -->
|
|
275
|
+
|
|
276
|
+
<!-- UTSDIFFTSJSON.UTS110111101.compatibility -->
|
|
277
|
+
|
|
278
|
+
TypeScript写法:
|
|
279
|
+
|
|
280
|
+
```ts
|
|
281
|
+
let o: { x: number; y: number } = {
|
|
282
|
+
x: 2,
|
|
283
|
+
y: 3,
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
type S = Set<{ x: number; y: number }>;
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
UTS正确写法:
|
|
290
|
+
|
|
291
|
+
```ts
|
|
292
|
+
type O = {
|
|
293
|
+
x: number;
|
|
294
|
+
y: number;
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
let o: O = { x: 2, y: 3 };
|
|
298
|
+
|
|
299
|
+
type S = Set<O>;
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
#### type 定义对象类型时不支持嵌套对象字面量 @uts110111162
|
|
303
|
+
|
|
304
|
+
<!-- UTSDIFFTSJSON.UTS110111162.type -->
|
|
305
|
+
|
|
306
|
+
<!-- UTSDIFFTSJSON.UTS110111162.code -->
|
|
307
|
+
|
|
308
|
+
<!-- UTSDIFFTSJSON.UTS110111162.description -->
|
|
309
|
+
|
|
310
|
+
<!-- UTSDIFFTSJSON.UTS110111162.compatibility -->
|
|
311
|
+
|
|
312
|
+
TypeScript写法:
|
|
313
|
+
|
|
314
|
+
```ts
|
|
315
|
+
type News = {
|
|
316
|
+
id: number;
|
|
317
|
+
author: {
|
|
318
|
+
id: number;
|
|
319
|
+
name: string;
|
|
320
|
+
};
|
|
321
|
+
};
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
UTS正确写法:
|
|
325
|
+
|
|
326
|
+
```ts
|
|
327
|
+
// 需要将嵌套的对象提取出来定义新的 type
|
|
328
|
+
type Author = {
|
|
329
|
+
id: number;
|
|
330
|
+
name: string;
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
type News = {
|
|
334
|
+
id: number;
|
|
335
|
+
author: Author;
|
|
336
|
+
};
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
#### 使用具体的类型而非 unknown @uts110111122
|
|
340
|
+
|
|
341
|
+
<!-- UTSDIFFTSJSON.UTS110111122.type -->
|
|
342
|
+
|
|
343
|
+
<!-- UTSDIFFTSJSON.UTS110111122.code -->
|
|
344
|
+
|
|
345
|
+
<!-- UTSDIFFTSJSON.UTS110111122.description -->
|
|
346
|
+
|
|
347
|
+
<!-- UTSDIFFTSJSON.UTS110111122.compatibility -->
|
|
348
|
+
|
|
349
|
+
TypeScript写法:
|
|
350
|
+
|
|
351
|
+
```ts
|
|
352
|
+
let value1: unknown;
|
|
353
|
+
value1 = true;
|
|
354
|
+
value1 = 42;
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
UTS正确写法:
|
|
358
|
+
|
|
359
|
+
```ts
|
|
360
|
+
let value1: any = true;
|
|
361
|
+
let value2: any = 42;
|
|
362
|
+
class A<T> {
|
|
363
|
+
name: T | null = null;
|
|
364
|
+
}
|
|
365
|
+
const a = new A<string>();
|
|
366
|
+
// 仅支持在泛型中使用unknown
|
|
367
|
+
console.log(a instanceof A<unknown>);
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
#### 不支持条件类型 @uts110111123
|
|
371
|
+
|
|
372
|
+
<!-- UTSDIFFTSJSON.UTS110111123.type -->
|
|
373
|
+
|
|
374
|
+
<!-- UTSDIFFTSJSON.UTS110111123.code -->
|
|
375
|
+
|
|
376
|
+
<!-- UTSDIFFTSJSON.UTS110111123.description -->
|
|
377
|
+
|
|
378
|
+
<!-- UTSDIFFTSJSON.UTS110111123.compatibility -->
|
|
379
|
+
|
|
380
|
+
TypeScript写法:
|
|
381
|
+
|
|
382
|
+
```ts
|
|
383
|
+
type X<T> = T extends number ? T : never;
|
|
384
|
+
type Y<T> = T extends Array<infer Item> ? Item : never;
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
#### 不支持映射类型 @uts110111124
|
|
389
|
+
|
|
390
|
+
<!-- UTSDIFFTSJSON.UTS110111124.type -->
|
|
391
|
+
|
|
392
|
+
<!-- UTSDIFFTSJSON.UTS110111124.code -->
|
|
393
|
+
|
|
394
|
+
<!-- UTSDIFFTSJSON.UTS110111124.description -->
|
|
395
|
+
|
|
396
|
+
<!-- UTSDIFFTSJSON.UTS110111124.compatibility -->
|
|
397
|
+
|
|
398
|
+
TypeScript写法:
|
|
399
|
+
|
|
400
|
+
```ts
|
|
401
|
+
type OptionsFlags<Type> = {
|
|
402
|
+
[Property in keyof Type]: boolean;
|
|
403
|
+
};
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
UTS正确写法:
|
|
407
|
+
|
|
408
|
+
```ts
|
|
409
|
+
class C {
|
|
410
|
+
n: number = 0;
|
|
411
|
+
s: string = "";
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
class CFlags {
|
|
415
|
+
n: boolean = false;
|
|
416
|
+
s: boolean = false;
|
|
417
|
+
}
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
#### 不支持 utility 类型 @uts110111125
|
|
421
|
+
|
|
422
|
+
<!-- UTSDIFFTSJSON.UTS110111125.type -->
|
|
423
|
+
|
|
424
|
+
<!-- UTSDIFFTSJSON.UTS110111125.code -->
|
|
425
|
+
|
|
426
|
+
<!-- UTSDIFFTSJSON.UTS110111125.description -->
|
|
427
|
+
|
|
428
|
+
<!-- UTSDIFFTSJSON.UTS110111125.compatibility -->
|
|
429
|
+
|
|
430
|
+
TypeScript写法:
|
|
431
|
+
|
|
432
|
+
```ts
|
|
433
|
+
interface User {
|
|
434
|
+
id: number;
|
|
435
|
+
name: string;
|
|
436
|
+
email: string;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
// Partial - 所有属性变为可选
|
|
440
|
+
type UserUpdate = Partial<User>;
|
|
441
|
+
let update: UserUpdate = { name: "John" };
|
|
442
|
+
|
|
443
|
+
// Readonly - 所有属性变为只读
|
|
444
|
+
type ReadUser = Readonly<User>;
|
|
445
|
+
let user: ReadUser = { id: 1, name: "John", email: "j@example.com" };
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
UTS正确写法:
|
|
449
|
+
|
|
450
|
+
```ts
|
|
451
|
+
// 使用 type 定义对象类型,而非 interface
|
|
452
|
+
type User = {
|
|
453
|
+
id: number;
|
|
454
|
+
name: string;
|
|
455
|
+
email: string;
|
|
456
|
+
};
|
|
457
|
+
|
|
458
|
+
// 手动定义等效类型
|
|
459
|
+
type UserUpdate = {
|
|
460
|
+
id?: number;
|
|
461
|
+
name?: string;
|
|
462
|
+
email?: string;
|
|
463
|
+
};
|
|
464
|
+
let update: UserUpdate = { name: "John" };
|
|
465
|
+
|
|
466
|
+
// 手动定义只读类型
|
|
467
|
+
type ReadUser = {
|
|
468
|
+
readonly id: number;
|
|
469
|
+
readonly name: string;
|
|
470
|
+
readonly email: string;
|
|
471
|
+
};
|
|
472
|
+
let user: ReadUser = { id: 1, name: "John", email: "j@example.com" };
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
#### 不支持 as const 断言 @uts110111126
|
|
476
|
+
|
|
477
|
+
<!-- UTSDIFFTSJSON.UTS110111126.type -->
|
|
478
|
+
|
|
479
|
+
<!-- UTSDIFFTSJSON.UTS110111126.code -->
|
|
480
|
+
|
|
481
|
+
<!-- UTSDIFFTSJSON.UTS110111126.description -->
|
|
482
|
+
|
|
483
|
+
<!-- UTSDIFFTSJSON.UTS110111126.compatibility -->
|
|
484
|
+
|
|
485
|
+
TypeScript写法:
|
|
486
|
+
|
|
487
|
+
```ts
|
|
488
|
+
// 'hello'类型
|
|
489
|
+
let x = "hello" as const;
|
|
490
|
+
|
|
491
|
+
// 'readonly [10, 20]'类型
|
|
492
|
+
let y = [10, 20] as const;
|
|
493
|
+
|
|
494
|
+
// '{ readonly text: 'hello' }'类型
|
|
495
|
+
let z = { text: "hello" } as const;
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
UTS正确写法:
|
|
499
|
+
|
|
500
|
+
```ts
|
|
501
|
+
// 'string'类型
|
|
502
|
+
let x: string = "hello";
|
|
503
|
+
|
|
504
|
+
// 'number[]'类型
|
|
505
|
+
let y: number[] = [10, 20];
|
|
506
|
+
|
|
507
|
+
type Label = {
|
|
508
|
+
text: string;
|
|
509
|
+
};
|
|
510
|
+
|
|
511
|
+
// 'Label'类型
|
|
512
|
+
let z: Label = {
|
|
513
|
+
text: "hello",
|
|
514
|
+
};
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
#### 不支持确定赋值断言 @uts110111127
|
|
518
|
+
|
|
519
|
+
<!-- UTSDIFFTSJSON.UTS110111127.type -->
|
|
520
|
+
|
|
521
|
+
<!-- UTSDIFFTSJSON.UTS110111127.code -->
|
|
522
|
+
|
|
523
|
+
<!-- UTSDIFFTSJSON.UTS110111127.description -->
|
|
524
|
+
|
|
525
|
+
<!-- UTSDIFFTSJSON.UTS110111127.compatibility -->
|
|
526
|
+
|
|
527
|
+
TypeScript写法:
|
|
528
|
+
|
|
529
|
+
```ts
|
|
530
|
+
let x!: number; // 提示:在使用前将x初始化
|
|
531
|
+
|
|
532
|
+
initialize();
|
|
533
|
+
|
|
534
|
+
function initialize() {
|
|
535
|
+
x = 10;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
console.log("x = " + x);
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
UTS正确写法:
|
|
542
|
+
|
|
543
|
+
```ts
|
|
544
|
+
function initialize(): number {
|
|
545
|
+
return 10;
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
let x: number = initialize();
|
|
549
|
+
|
|
550
|
+
console.log("x = " + x);
|
|
551
|
+
```
|
|
552
|
+
|
|
553
|
+
#### 类型别名不能出现在局部作用域中 @uts100006
|
|
554
|
+
|
|
555
|
+
<!-- UTSDIFFTSJSON.UTS100006.type -->
|
|
556
|
+
|
|
557
|
+
<!-- UTSDIFFTSJSON.UTS100006.code -->
|
|
558
|
+
|
|
559
|
+
<!-- UTSDIFFTSJSON.UTS100006.description -->
|
|
560
|
+
|
|
561
|
+
<!-- UTSDIFFTSJSON.UTS100006.compatibility -->
|
|
562
|
+
|
|
563
|
+
TypeScript写法:
|
|
564
|
+
|
|
565
|
+
```ts
|
|
566
|
+
function main() {
|
|
567
|
+
type MyError = Error
|
|
568
|
+
}
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
UTS正确写法:
|
|
572
|
+
|
|
573
|
+
```ts
|
|
574
|
+
type MyError = Error
|
|
575
|
+
function main() {
|
|
576
|
+
}
|
|
577
|
+
```
|
|
578
|
+
|
|
579
|
+
### 3. 类和对象相关
|
|
580
|
+
|
|
581
|
+
#### 不支持以#开头的私有字段 @uts110111128
|
|
582
|
+
|
|
583
|
+
<!-- UTSDIFFTSJSON.UTS110111128.type -->
|
|
584
|
+
|
|
585
|
+
<!-- UTSDIFFTSJSON.UTS110111128.code -->
|
|
586
|
+
|
|
587
|
+
<!-- UTSDIFFTSJSON.UTS110111128.description -->
|
|
588
|
+
|
|
589
|
+
<!-- UTSDIFFTSJSON.UTS110111128.compatibility -->
|
|
590
|
+
|
|
591
|
+
TypeScript写法:
|
|
592
|
+
|
|
593
|
+
```ts
|
|
594
|
+
class C {
|
|
595
|
+
#foo: number = 42;
|
|
596
|
+
}
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
UTS正确写法:
|
|
600
|
+
|
|
601
|
+
```ts
|
|
602
|
+
class C {
|
|
603
|
+
private foo: number = 42;
|
|
604
|
+
}
|
|
605
|
+
```
|
|
606
|
+
|
|
607
|
+
#### class 不支持通过索引访问字段 @uts110111129
|
|
608
|
+
|
|
609
|
+
<!-- UTSDIFFTSJSON.UTS110111129.type -->
|
|
610
|
+
|
|
611
|
+
<!-- UTSDIFFTSJSON.UTS110111129.code -->
|
|
612
|
+
|
|
613
|
+
<!-- UTSDIFFTSJSON.UTS110111129.description -->
|
|
614
|
+
|
|
615
|
+
<!-- UTSDIFFTSJSON.UTS110111129.compatibility -->
|
|
616
|
+
|
|
617
|
+
TypeScript写法:
|
|
618
|
+
|
|
619
|
+
```ts
|
|
620
|
+
class Point {
|
|
621
|
+
x: string = "";
|
|
622
|
+
y: string = "";
|
|
623
|
+
}
|
|
624
|
+
let p: Point = { x: "1", y: "2" };
|
|
625
|
+
console.log(p["x"]);
|
|
626
|
+
|
|
627
|
+
class Person {
|
|
628
|
+
name: string = "";
|
|
629
|
+
age: number = 0;
|
|
630
|
+
[key: string]: string | number;
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
let person: Person = {
|
|
634
|
+
name: "John",
|
|
635
|
+
age: 30,
|
|
636
|
+
email: "***@example.com",
|
|
637
|
+
phoneNumber: "18*********",
|
|
638
|
+
};
|
|
639
|
+
```
|
|
640
|
+
|
|
641
|
+
UTS正确写法:
|
|
642
|
+
|
|
643
|
+
```ts
|
|
644
|
+
class Point {
|
|
645
|
+
x: string = "";
|
|
646
|
+
y: string = "";
|
|
647
|
+
}
|
|
648
|
+
let p: Point = { x: "1", y: "2" };
|
|
649
|
+
console.log(p.x);
|
|
650
|
+
|
|
651
|
+
class Person {
|
|
652
|
+
name: string;
|
|
653
|
+
age: number;
|
|
654
|
+
email: string;
|
|
655
|
+
phoneNumber: string;
|
|
656
|
+
|
|
657
|
+
constructor(name: string, age: number, email: string, phoneNumber: string) {
|
|
658
|
+
this.name = name;
|
|
659
|
+
this.age = age;
|
|
660
|
+
this.email = email;
|
|
661
|
+
this.phoneNumber = phoneNumber;
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
let person = new Person("John", 30, "***@example.com", "18*********");
|
|
666
|
+
console.log(person["name"]); // 编译时错误
|
|
667
|
+
console.log(person.unknownProperty); // 编译时错误
|
|
668
|
+
```
|
|
669
|
+
|
|
670
|
+
#### 不支持静态块 @uts110111130
|
|
671
|
+
|
|
672
|
+
<!-- UTSDIFFTSJSON.UTS110111130.type -->
|
|
673
|
+
|
|
674
|
+
<!-- UTSDIFFTSJSON.UTS110111130.code -->
|
|
675
|
+
|
|
676
|
+
<!-- UTSDIFFTSJSON.UTS110111130.description -->
|
|
677
|
+
|
|
678
|
+
<!-- UTSDIFFTSJSON.UTS110111130.compatibility -->
|
|
679
|
+
|
|
680
|
+
TypeScript写法:
|
|
681
|
+
|
|
682
|
+
```ts
|
|
683
|
+
class MyClass {
|
|
684
|
+
static data: Map<string, string> = new Map<string, string>();
|
|
685
|
+
|
|
686
|
+
// 静态块初始化
|
|
687
|
+
static {
|
|
688
|
+
this.data.set("key1", "value1");
|
|
689
|
+
this.data.set("key2", "value2");
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
```
|
|
693
|
+
|
|
694
|
+
UTS正确写法:
|
|
695
|
+
|
|
696
|
+
```ts
|
|
697
|
+
class MyClass {
|
|
698
|
+
static data: Map<string, string> = MyClass.initData();
|
|
699
|
+
|
|
700
|
+
// 使用静态方法替代静态块
|
|
701
|
+
private static initData(): Map<string, string> {
|
|
702
|
+
let map: Map<string, string> = new Map<string, string>();
|
|
703
|
+
map.set("key1", "value1");
|
|
704
|
+
map.set("key2", "value2");
|
|
705
|
+
return map;
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
```
|
|
709
|
+
|
|
710
|
+
#### class 不能被用作对象 @uts110111151
|
|
711
|
+
|
|
712
|
+
<!-- UTSDIFFTSJSON.UTS110111151.type -->
|
|
713
|
+
|
|
714
|
+
<!-- UTSDIFFTSJSON.UTS110111151.code -->
|
|
715
|
+
|
|
716
|
+
<!-- UTSDIFFTSJSON.UTS110111151.description -->
|
|
717
|
+
|
|
718
|
+
<!-- UTSDIFFTSJSON.UTS110111151.compatibility -->
|
|
719
|
+
|
|
720
|
+
TypeScript写法:
|
|
721
|
+
|
|
722
|
+
```ts
|
|
723
|
+
class Person {
|
|
724
|
+
static type: string = "human";
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
// 在 TypeScript 中可以将类作为对象使用
|
|
728
|
+
console.log(Person.type);
|
|
729
|
+
|
|
730
|
+
// 可以将类赋值给变量
|
|
731
|
+
let PersonClass: typeof Person = Person;
|
|
732
|
+
let p: Person = new PersonClass();
|
|
733
|
+
```
|
|
734
|
+
|
|
735
|
+
UTS正确写法:
|
|
736
|
+
|
|
737
|
+
```ts
|
|
738
|
+
class Person {
|
|
739
|
+
static type: string = "human";
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
// 在 UTS 中可以访问静态成员
|
|
743
|
+
console.log(Person.type);
|
|
744
|
+
|
|
745
|
+
// 但不能将类本身赋值给变量
|
|
746
|
+
// let PersonClass = Person; // 错误
|
|
747
|
+
|
|
748
|
+
// 正确做法是使用工厂函数
|
|
749
|
+
function createPerson(): Person {
|
|
750
|
+
return new Person();
|
|
751
|
+
}
|
|
752
|
+
```
|
|
753
|
+
|
|
754
|
+
#### 类继承时必须显示声明构造器 @uts110111131
|
|
755
|
+
|
|
756
|
+
<!-- UTSDIFFTSJSON.UTS110111131.type -->
|
|
757
|
+
|
|
758
|
+
<!-- UTSDIFFTSJSON.UTS110111131.code -->
|
|
759
|
+
|
|
760
|
+
<!-- UTSDIFFTSJSON.UTS110111131.description -->
|
|
761
|
+
|
|
762
|
+
<!-- UTSDIFFTSJSON.UTS110111131.compatibility -->
|
|
763
|
+
|
|
764
|
+
TypeScript写法:
|
|
765
|
+
|
|
766
|
+
```ts
|
|
767
|
+
class Parent {
|
|
768
|
+
name: string = "";
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
class Child extends Parent {
|
|
772
|
+
// TypeScript 允许省略构造器
|
|
773
|
+
}
|
|
774
|
+
```
|
|
775
|
+
|
|
776
|
+
UTS正确写法:
|
|
777
|
+
|
|
778
|
+
```ts
|
|
779
|
+
class Parent {
|
|
780
|
+
name: string = "";
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
class Child extends Parent {
|
|
784
|
+
// 需要显式声明构造器
|
|
785
|
+
constructor() {
|
|
786
|
+
super();
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
```
|
|
790
|
+
|
|
791
|
+
#### 类不允许 implements @uts110111132
|
|
792
|
+
|
|
793
|
+
<!-- UTSDIFFTSJSON.UTS110111132.type -->
|
|
794
|
+
|
|
795
|
+
<!-- UTSDIFFTSJSON.UTS110111132.code -->
|
|
796
|
+
|
|
797
|
+
<!-- UTSDIFFTSJSON.UTS110111132.description -->
|
|
798
|
+
|
|
799
|
+
<!-- UTSDIFFTSJSON.UTS110111132.compatibility -->
|
|
800
|
+
|
|
801
|
+
TypeScript写法:
|
|
802
|
+
|
|
803
|
+
```ts
|
|
804
|
+
class C {
|
|
805
|
+
foo() {}
|
|
806
|
+
}
|
|
807
|
+
|
|
808
|
+
class C1 implements C {
|
|
809
|
+
foo() {}
|
|
810
|
+
}
|
|
811
|
+
```
|
|
812
|
+
|
|
813
|
+
UTS正确写法:
|
|
814
|
+
|
|
815
|
+
```ts
|
|
816
|
+
interface C {
|
|
817
|
+
foo(): void;
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
class C1 implements C {
|
|
821
|
+
foo() {}
|
|
822
|
+
}
|
|
823
|
+
```
|
|
824
|
+
|
|
825
|
+
#### 接口不能继承类 @uts110111133
|
|
826
|
+
|
|
827
|
+
<!-- UTSDIFFTSJSON.UTS110111133.type -->
|
|
828
|
+
|
|
829
|
+
<!-- UTSDIFFTSJSON.UTS110111133.code -->
|
|
830
|
+
|
|
831
|
+
<!-- UTSDIFFTSJSON.UTS110111133.description -->
|
|
832
|
+
|
|
833
|
+
<!-- UTSDIFFTSJSON.UTS110111133.compatibility -->
|
|
834
|
+
|
|
835
|
+
TypeScript写法:
|
|
836
|
+
|
|
837
|
+
```ts
|
|
838
|
+
class Control {
|
|
839
|
+
state: number = 0;
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
interface SelectableControl extends Control {
|
|
843
|
+
select(): void;
|
|
844
|
+
}
|
|
845
|
+
```
|
|
846
|
+
|
|
847
|
+
UTS正确写法:
|
|
848
|
+
|
|
849
|
+
```ts
|
|
850
|
+
interface Control {
|
|
851
|
+
state: number;
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
interface SelectableControl extends Control {
|
|
855
|
+
select(): void;
|
|
856
|
+
}
|
|
857
|
+
```
|
|
858
|
+
|
|
859
|
+
#### 接口不能出现在局部作用域中 @uts110111166
|
|
860
|
+
|
|
861
|
+
<!-- UTSDIFFTSJSON.UTS110111166.type -->
|
|
862
|
+
|
|
863
|
+
<!-- UTSDIFFTSJSON.UTS110111166.code -->
|
|
864
|
+
|
|
865
|
+
<!-- UTSDIFFTSJSON.UTS110111166.description -->
|
|
866
|
+
|
|
867
|
+
<!-- UTSDIFFTSJSON.UTS110111166.compatibility -->
|
|
868
|
+
|
|
869
|
+
TypeScript写法:
|
|
870
|
+
|
|
871
|
+
```ts
|
|
872
|
+
function test() {
|
|
873
|
+
interface Test {
|
|
874
|
+
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
```
|
|
878
|
+
|
|
879
|
+
UTS正确写法:
|
|
880
|
+
|
|
881
|
+
```ts
|
|
882
|
+
interface Test {
|
|
883
|
+
|
|
884
|
+
}
|
|
885
|
+
function test() {
|
|
886
|
+
|
|
887
|
+
}
|
|
888
|
+
```
|
|
889
|
+
|
|
890
|
+
#### 不支持修改对象的方法 @uts110111134
|
|
891
|
+
|
|
892
|
+
<!-- UTSDIFFTSJSON.UTS110111134.type -->
|
|
893
|
+
|
|
894
|
+
<!-- UTSDIFFTSJSON.UTS110111134.code -->
|
|
895
|
+
|
|
896
|
+
<!-- UTSDIFFTSJSON.UTS110111134.description -->
|
|
897
|
+
|
|
898
|
+
<!-- UTSDIFFTSJSON.UTS110111134.compatibility -->
|
|
899
|
+
|
|
900
|
+
TypeScript写法:
|
|
901
|
+
|
|
902
|
+
```ts
|
|
903
|
+
class C {
|
|
904
|
+
foo() {
|
|
905
|
+
console.log("foo");
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
|
|
909
|
+
function bar() {
|
|
910
|
+
console.log("bar");
|
|
911
|
+
}
|
|
912
|
+
|
|
913
|
+
let c1 = new C();
|
|
914
|
+
let c2 = new C();
|
|
915
|
+
c2.foo = bar;
|
|
916
|
+
|
|
917
|
+
c1.foo(); // foo
|
|
918
|
+
c2.foo(); // bar
|
|
919
|
+
```
|
|
920
|
+
|
|
921
|
+
UTS正确写法:
|
|
922
|
+
|
|
923
|
+
```ts
|
|
924
|
+
class C {
|
|
925
|
+
foo() {
|
|
926
|
+
console.log("foo");
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
class Derived extends C {
|
|
931
|
+
constructor() {
|
|
932
|
+
super();
|
|
933
|
+
}
|
|
934
|
+
override foo() {
|
|
935
|
+
console.log("Extra");
|
|
936
|
+
super.foo();
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
|
|
940
|
+
let c1 = new C();
|
|
941
|
+
let c2 = new C();
|
|
942
|
+
c1.foo(); // foo
|
|
943
|
+
c2.foo(); // foo
|
|
944
|
+
|
|
945
|
+
let c3 = new Derived();
|
|
946
|
+
c3.foo(); // Extra foo
|
|
947
|
+
```
|
|
948
|
+
|
|
949
|
+
|
|
950
|
+
#### type、class 或 interface 的属性方法不支持定义泛型信息 @uts110111161
|
|
951
|
+
|
|
952
|
+
<!-- UTSDIFFTSJSON.UTS110111161.type -->
|
|
953
|
+
|
|
954
|
+
<!-- UTSDIFFTSJSON.UTS110111161.code -->
|
|
955
|
+
|
|
956
|
+
<!-- UTSDIFFTSJSON.UTS110111161.description -->
|
|
957
|
+
|
|
958
|
+
<!-- UTSDIFFTSJSON.UTS110111161.compatibility -->
|
|
959
|
+
|
|
960
|
+
TypeScript写法:
|
|
961
|
+
|
|
962
|
+
```ts
|
|
963
|
+
type ApiService = {
|
|
964
|
+
request: <T>(url: string) => Promise<T>; // 属性方法支持泛型
|
|
965
|
+
};
|
|
966
|
+
|
|
967
|
+
interface DataHandler {
|
|
968
|
+
process: <T>(data: T) => T; // 属性方法支持泛型
|
|
969
|
+
}
|
|
970
|
+
|
|
971
|
+
class DataProcessor {
|
|
972
|
+
handler: <T>(data: T) => T; // 属性方法支持泛型
|
|
973
|
+
}
|
|
974
|
+
```
|
|
975
|
+
|
|
976
|
+
UTS正确写法:
|
|
977
|
+
|
|
978
|
+
```ts
|
|
979
|
+
// type
|
|
980
|
+
// 方案1:指定具体类型
|
|
981
|
+
type ApiService = {
|
|
982
|
+
request: (url: string) => Promise<any>;
|
|
983
|
+
};
|
|
984
|
+
// 方案2:提升到type级别
|
|
985
|
+
type ApiService<T> = {
|
|
986
|
+
request: (url: string) => Promise<T>;
|
|
987
|
+
};
|
|
988
|
+
|
|
989
|
+
// interface
|
|
990
|
+
// 方案1:指定具体类型
|
|
991
|
+
interface DataHandler {
|
|
992
|
+
process: (data: any) => any;
|
|
993
|
+
}
|
|
994
|
+
// 方案2:提升到interface级别
|
|
995
|
+
interface DataHandler<T> {
|
|
996
|
+
process: (data: T) => T;
|
|
997
|
+
}
|
|
998
|
+
// 方案3:定义为方法
|
|
999
|
+
interface DataHandler {
|
|
1000
|
+
process<T>(data: T): T;
|
|
1001
|
+
}
|
|
1002
|
+
|
|
1003
|
+
// class
|
|
1004
|
+
// 方案1:指定具体类型
|
|
1005
|
+
class DataProcessor {
|
|
1006
|
+
handler: (data: any) => any;
|
|
1007
|
+
}
|
|
1008
|
+
// 方案2:提升到class级别
|
|
1009
|
+
class DataProcessor<T> {
|
|
1010
|
+
handler: (data: T) => T;
|
|
1011
|
+
}
|
|
1012
|
+
// 方案3:定义为方法
|
|
1013
|
+
class DataProcessor {
|
|
1014
|
+
process<T>(data: T): T {
|
|
1015
|
+
return data;
|
|
1016
|
+
}
|
|
1017
|
+
}
|
|
1018
|
+
```
|
|
1019
|
+
|
|
1020
|
+
#### 类不能作为值使用 @uts110111164
|
|
1021
|
+
|
|
1022
|
+
<!-- UTSDIFFTSJSON.UTS110111164.type -->
|
|
1023
|
+
|
|
1024
|
+
<!-- UTSDIFFTSJSON.UTS110111164.code -->
|
|
1025
|
+
|
|
1026
|
+
<!-- UTSDIFFTSJSON.UTS110111164.description -->
|
|
1027
|
+
|
|
1028
|
+
<!-- UTSDIFFTSJSON.UTS110111164.compatibility -->
|
|
1029
|
+
|
|
1030
|
+
TypeScript写法:
|
|
1031
|
+
|
|
1032
|
+
```ts
|
|
1033
|
+
type Msg = {
|
|
1034
|
+
obj: any | null
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
class Abc {
|
|
1038
|
+
}
|
|
1039
|
+
let test : Msg = {
|
|
1040
|
+
obj: Abc
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
test.obj = Abc;
|
|
1044
|
+
|
|
1045
|
+
console.log(test);
|
|
1046
|
+
```
|
|
1047
|
+
|
|
1048
|
+
UTS正确写法:
|
|
1049
|
+
|
|
1050
|
+
```ts
|
|
1051
|
+
type Msg = {
|
|
1052
|
+
obj: any | null
|
|
1053
|
+
}
|
|
1054
|
+
|
|
1055
|
+
class Abc {
|
|
1056
|
+
|
|
1057
|
+
}
|
|
1058
|
+
let test : Msg = {
|
|
1059
|
+
obj: null
|
|
1060
|
+
}
|
|
1061
|
+
|
|
1062
|
+
test.obj = new Abc();
|
|
1063
|
+
|
|
1064
|
+
console.log(test);
|
|
1065
|
+
```
|
|
1066
|
+
|
|
1067
|
+
#### Enum成员初始化器仅支持数字或字符串 @uts120000003
|
|
1068
|
+
|
|
1069
|
+
<!-- UTSDIFFTSJSON.UTS120000003.type -->
|
|
1070
|
+
|
|
1071
|
+
<!-- UTSDIFFTSJSON.UTS120000003.code -->
|
|
1072
|
+
|
|
1073
|
+
<!-- UTSDIFFTSJSON.UTS120000003.description -->
|
|
1074
|
+
|
|
1075
|
+
<!-- UTSDIFFTSJSON.UTS120000003.compatibility -->
|
|
1076
|
+
|
|
1077
|
+
TypeScript写法:
|
|
1078
|
+
|
|
1079
|
+
```ts
|
|
1080
|
+
enum Test {
|
|
1081
|
+
A = 3 * 2
|
|
1082
|
+
}
|
|
1083
|
+
```
|
|
1084
|
+
|
|
1085
|
+
UTS正确写法:
|
|
1086
|
+
|
|
1087
|
+
```ts
|
|
1088
|
+
enum Test {
|
|
1089
|
+
A = 6
|
|
1090
|
+
}
|
|
1091
|
+
```
|
|
1092
|
+
|
|
1093
|
+
#### Enum声明必须是顶级声明 @uts120000004
|
|
1094
|
+
|
|
1095
|
+
<!-- UTSDIFFTSJSON.UTS120000004.type -->
|
|
1096
|
+
|
|
1097
|
+
<!-- UTSDIFFTSJSON.UTS120000004.code -->
|
|
1098
|
+
|
|
1099
|
+
<!-- UTSDIFFTSJSON.UTS120000004.description -->
|
|
1100
|
+
|
|
1101
|
+
<!-- UTSDIFFTSJSON.UTS120000004.compatibility -->
|
|
1102
|
+
|
|
1103
|
+
TypeScript写法:
|
|
1104
|
+
|
|
1105
|
+
```ts
|
|
1106
|
+
function test() {
|
|
1107
|
+
enum Test {}
|
|
1108
|
+
}
|
|
1109
|
+
```
|
|
1110
|
+
|
|
1111
|
+
UTS正确写法:
|
|
1112
|
+
|
|
1113
|
+
```ts
|
|
1114
|
+
enum Test {}
|
|
1115
|
+
function test() {
|
|
1116
|
+
}
|
|
1117
|
+
```
|
|
1118
|
+
|
|
1119
|
+
|
|
1120
|
+
### 4. 函数相关
|
|
1121
|
+
|
|
1122
|
+
#### 使用 class 而非具有 call signature 的类型 @uts110111135
|
|
1123
|
+
|
|
1124
|
+
<!-- UTSDIFFTSJSON.UTS110111135.type -->
|
|
1125
|
+
|
|
1126
|
+
<!-- UTSDIFFTSJSON.UTS110111135.code -->
|
|
1127
|
+
|
|
1128
|
+
<!-- UTSDIFFTSJSON.UTS110111135.description -->
|
|
1129
|
+
|
|
1130
|
+
<!-- UTSDIFFTSJSON.UTS110111135.compatibility -->
|
|
1131
|
+
|
|
1132
|
+
TypeScript写法:
|
|
1133
|
+
|
|
1134
|
+
```ts
|
|
1135
|
+
type DescribableFunction = {
|
|
1136
|
+
description: string;
|
|
1137
|
+
(someArg: string): string; // call signature
|
|
1138
|
+
};
|
|
1139
|
+
|
|
1140
|
+
function doSomething(fn: DescribableFunction): void {
|
|
1141
|
+
console.log(fn.description + " returned " + fn(""));
|
|
1142
|
+
}
|
|
1143
|
+
```
|
|
1144
|
+
|
|
1145
|
+
UTS正确写法:
|
|
1146
|
+
|
|
1147
|
+
```ts
|
|
1148
|
+
class DescribableFunction {
|
|
1149
|
+
description: string;
|
|
1150
|
+
public invoke(someArg: string): string {
|
|
1151
|
+
return someArg;
|
|
1152
|
+
}
|
|
1153
|
+
constructor() {
|
|
1154
|
+
this.description = "desc";
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
|
|
1158
|
+
function doSomething(fn: DescribableFunction): void {
|
|
1159
|
+
console.log(fn.description + " returned " + fn.invoke(""));
|
|
1160
|
+
}
|
|
1161
|
+
|
|
1162
|
+
doSomething(new DescribableFunction());
|
|
1163
|
+
```
|
|
1164
|
+
|
|
1165
|
+
|
|
1166
|
+
#### 使用 class 而非具有构造签名的类型 @uts110111136
|
|
1167
|
+
|
|
1168
|
+
<!-- UTSDIFFTSJSON.UTS110111136.type -->
|
|
1169
|
+
|
|
1170
|
+
<!-- UTSDIFFTSJSON.UTS110111136.code -->
|
|
1171
|
+
|
|
1172
|
+
<!-- UTSDIFFTSJSON.UTS110111136.description -->
|
|
1173
|
+
|
|
1174
|
+
<!-- UTSDIFFTSJSON.UTS110111136.compatibility -->
|
|
1175
|
+
|
|
1176
|
+
TypeScript写法:
|
|
1177
|
+
|
|
1178
|
+
```ts
|
|
1179
|
+
class SomeObject {}
|
|
1180
|
+
|
|
1181
|
+
type SomeConstructor = {
|
|
1182
|
+
new (s: string): SomeObject;
|
|
1183
|
+
};
|
|
1184
|
+
|
|
1185
|
+
function fn(ctor: SomeConstructor) {
|
|
1186
|
+
return new ctor("hello");
|
|
1187
|
+
}
|
|
1188
|
+
```
|
|
1189
|
+
|
|
1190
|
+
UTS正确写法:
|
|
1191
|
+
|
|
1192
|
+
```ts
|
|
1193
|
+
class SomeObject {
|
|
1194
|
+
public f: string;
|
|
1195
|
+
constructor(s: string) {
|
|
1196
|
+
this.f = s;
|
|
1197
|
+
}
|
|
1198
|
+
}
|
|
1199
|
+
|
|
1200
|
+
function fn(s: string): SomeObject {
|
|
1201
|
+
return new SomeObject(s);
|
|
1202
|
+
}
|
|
1203
|
+
```
|
|
1204
|
+
|
|
1205
|
+
#### 不支持构造函数类型 @uts110111137
|
|
1206
|
+
|
|
1207
|
+
<!-- UTSDIFFTSJSON.UTS110111137.type -->
|
|
1208
|
+
|
|
1209
|
+
<!-- UTSDIFFTSJSON.UTS110111137.code -->
|
|
1210
|
+
|
|
1211
|
+
<!-- UTSDIFFTSJSON.UTS110111137.description -->
|
|
1212
|
+
|
|
1213
|
+
<!-- UTSDIFFTSJSON.UTS110111137.compatibility -->
|
|
1214
|
+
|
|
1215
|
+
TypeScript写法:
|
|
1216
|
+
|
|
1217
|
+
```ts
|
|
1218
|
+
class Person {
|
|
1219
|
+
constructor(name: string, age: number) {}
|
|
1220
|
+
}
|
|
1221
|
+
type PersonCtor = new (name: string, age: number) => Person;
|
|
1222
|
+
|
|
1223
|
+
function createPerson(Ctor: PersonCtor, name: string, age: number): Person {
|
|
1224
|
+
return new Ctor(name, age);
|
|
1225
|
+
}
|
|
1226
|
+
|
|
1227
|
+
const person = createPerson(Person, "John", 30);
|
|
1228
|
+
```
|
|
1229
|
+
|
|
1230
|
+
UTS正确写法:
|
|
1231
|
+
|
|
1232
|
+
```ts
|
|
1233
|
+
class Person {
|
|
1234
|
+
constructor(name: string, age: number) {}
|
|
1235
|
+
}
|
|
1236
|
+
type PersonCtor = (n: string, a: number) => Person;
|
|
1237
|
+
|
|
1238
|
+
function createPerson(Ctor: PersonCtor, n: string, a: number): Person {
|
|
1239
|
+
return Ctor(n, a);
|
|
1240
|
+
}
|
|
1241
|
+
|
|
1242
|
+
let Impersonizer: PersonCtor = (n: string, a: number): Person => {
|
|
1243
|
+
return new Person(n, a);
|
|
1244
|
+
};
|
|
1245
|
+
|
|
1246
|
+
const person = createPerson(Impersonizer, "John", 30);
|
|
1247
|
+
```
|
|
1248
|
+
|
|
1249
|
+
#### 函数声明不能作为值使用 @uts110111152
|
|
1250
|
+
|
|
1251
|
+
<!-- UTSDIFFTSJSON.UTS110111152.type -->
|
|
1252
|
+
|
|
1253
|
+
<!-- UTSDIFFTSJSON.UTS110111152.code -->
|
|
1254
|
+
|
|
1255
|
+
<!-- UTSDIFFTSJSON.UTS110111152.description -->
|
|
1256
|
+
|
|
1257
|
+
<!-- UTSDIFFTSJSON.UTS110111152.compatibility -->
|
|
1258
|
+
|
|
1259
|
+
TypeScript写法:
|
|
1260
|
+
|
|
1261
|
+
```ts
|
|
1262
|
+
// 允许将函数声明作为值使用
|
|
1263
|
+
function foo() {
|
|
1264
|
+
console.log("foo");
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
setTimeout(foo, 1000); // 将函数作为参数传递
|
|
1268
|
+
```
|
|
1269
|
+
|
|
1270
|
+
UTS正确写法:
|
|
1271
|
+
|
|
1272
|
+
```ts
|
|
1273
|
+
// 使用函数表达式或箭头函数
|
|
1274
|
+
const foo = () => {
|
|
1275
|
+
console.log("foo");
|
|
1276
|
+
};
|
|
1277
|
+
|
|
1278
|
+
setTimeout(foo, 1000);
|
|
1279
|
+
```
|
|
1280
|
+
|
|
1281
|
+
|
|
1282
|
+
#### 不支持对函数声明属性 @uts110111138
|
|
1283
|
+
|
|
1284
|
+
<!-- UTSDIFFTSJSON.UTS110111138.type -->
|
|
1285
|
+
|
|
1286
|
+
<!-- UTSDIFFTSJSON.UTS110111138.code -->
|
|
1287
|
+
|
|
1288
|
+
<!-- UTSDIFFTSJSON.UTS110111138.description -->
|
|
1289
|
+
|
|
1290
|
+
<!-- UTSDIFFTSJSON.UTS110111138.compatibility -->
|
|
1291
|
+
|
|
1292
|
+
TypeScript写法:
|
|
1293
|
+
|
|
1294
|
+
```ts
|
|
1295
|
+
function greet(name: string): void {
|
|
1296
|
+
console.log("Hello, " + name);
|
|
1297
|
+
}
|
|
1298
|
+
|
|
1299
|
+
// 在 TypeScript 中可以给函数添加属性
|
|
1300
|
+
greet.count = 0;
|
|
1301
|
+
greet.increment = function (): void {
|
|
1302
|
+
this.count++;
|
|
1303
|
+
};
|
|
1304
|
+
|
|
1305
|
+
greet("John");
|
|
1306
|
+
greet.increment();
|
|
1307
|
+
console.log(greet.count); // 1
|
|
1308
|
+
```
|
|
1309
|
+
|
|
1310
|
+
UTS正确写法:
|
|
1311
|
+
|
|
1312
|
+
```ts
|
|
1313
|
+
// 在 UTS 中使用类替代函数属性
|
|
1314
|
+
class Greeter {
|
|
1315
|
+
count: number = 0;
|
|
1316
|
+
|
|
1317
|
+
greet(name: string): void {
|
|
1318
|
+
console.log("Hello, " + name);
|
|
1319
|
+
}
|
|
1320
|
+
|
|
1321
|
+
increment(): void {
|
|
1322
|
+
this.count++;
|
|
1323
|
+
}
|
|
1324
|
+
}
|
|
1325
|
+
|
|
1326
|
+
let g: Greeter = new Greeter();
|
|
1327
|
+
g.greet("John");
|
|
1328
|
+
g.increment();
|
|
1329
|
+
console.log(g.count); // 1
|
|
1330
|
+
```
|
|
1331
|
+
|
|
1332
|
+
#### 不支持 Function.apply 和 Function.call @uts110111139
|
|
1333
|
+
|
|
1334
|
+
<!-- UTSDIFFTSJSON.UTS110111139.type -->
|
|
1335
|
+
|
|
1336
|
+
<!-- UTSDIFFTSJSON.UTS110111139.code -->
|
|
1337
|
+
|
|
1338
|
+
<!-- UTSDIFFTSJSON.UTS110111139.description -->
|
|
1339
|
+
|
|
1340
|
+
<!-- UTSDIFFTSJSON.UTS110111139.compatibility -->
|
|
1341
|
+
|
|
1342
|
+
TypeScript写法:
|
|
1343
|
+
|
|
1344
|
+
```ts
|
|
1345
|
+
function greet(greeting: string): void {
|
|
1346
|
+
console.log(greeting + ", " + this.name);
|
|
1347
|
+
}
|
|
1348
|
+
|
|
1349
|
+
interface PersonType {
|
|
1350
|
+
name: string;
|
|
1351
|
+
}
|
|
1352
|
+
|
|
1353
|
+
let person: PersonType = { name: "John" };
|
|
1354
|
+
|
|
1355
|
+
// 使用 call 指定 this
|
|
1356
|
+
greet.call(person, "Hello");
|
|
1357
|
+
|
|
1358
|
+
// 使用 apply 指定 this 和参数数组
|
|
1359
|
+
greet.apply(person, ["Hi"]);
|
|
1360
|
+
```
|
|
1361
|
+
|
|
1362
|
+
UTS正确写法:
|
|
1363
|
+
|
|
1364
|
+
```ts
|
|
1365
|
+
// 在 UTS 中使用类和方法
|
|
1366
|
+
class Person {
|
|
1367
|
+
name: string;
|
|
1368
|
+
|
|
1369
|
+
constructor(name: string) {
|
|
1370
|
+
this.name = name;
|
|
1371
|
+
}
|
|
1372
|
+
|
|
1373
|
+
greet(greeting: string): void {
|
|
1374
|
+
console.log(greeting + ", " + this.name);
|
|
1375
|
+
}
|
|
1376
|
+
}
|
|
1377
|
+
|
|
1378
|
+
let person: Person = new Person("John");
|
|
1379
|
+
person.greet("Hello");
|
|
1380
|
+
```
|
|
1381
|
+
|
|
1382
|
+
#### 不支持 Function.bind @uts110111139
|
|
1383
|
+
|
|
1384
|
+
<!-- UTSDIFFTSJSON.UTS110111139_1.type -->
|
|
1385
|
+
|
|
1386
|
+
<!-- UTSDIFFTSJSON.UTS110111139_1.code -->
|
|
1387
|
+
|
|
1388
|
+
<!-- UTSDIFFTSJSON.UTS110111139_1.description -->
|
|
1389
|
+
|
|
1390
|
+
<!-- UTSDIFFTSJSON.UTS110111139_1.compatibility -->
|
|
1391
|
+
|
|
1392
|
+
TypeScript写法:
|
|
1393
|
+
|
|
1394
|
+
```ts
|
|
1395
|
+
class Counter {
|
|
1396
|
+
count: number = 0;
|
|
1397
|
+
|
|
1398
|
+
increment(): void {
|
|
1399
|
+
this.count++;
|
|
1400
|
+
console.log(this.count);
|
|
1401
|
+
}
|
|
1402
|
+
}
|
|
1403
|
+
|
|
1404
|
+
let counter: Counter = new Counter();
|
|
1405
|
+
|
|
1406
|
+
// 使用 bind 绑定 this
|
|
1407
|
+
let inc: () => void = counter.increment.bind(counter);
|
|
1408
|
+
inc(); // 1
|
|
1409
|
+
inc(); // 2
|
|
1410
|
+
```
|
|
1411
|
+
|
|
1412
|
+
UTS正确写法:
|
|
1413
|
+
|
|
1414
|
+
```ts
|
|
1415
|
+
class Counter {
|
|
1416
|
+
count: number = 0;
|
|
1417
|
+
|
|
1418
|
+
increment(): void {
|
|
1419
|
+
this.count++;
|
|
1420
|
+
console.log(this.count);
|
|
1421
|
+
}
|
|
1422
|
+
|
|
1423
|
+
// 在 UTS 中使用方法返回闭包
|
|
1424
|
+
getIncrement(): () => void {
|
|
1425
|
+
return () => {
|
|
1426
|
+
this.count++;
|
|
1427
|
+
console.log(this.count);
|
|
1428
|
+
};
|
|
1429
|
+
}
|
|
1430
|
+
}
|
|
1431
|
+
|
|
1432
|
+
let counter: Counter = new Counter();
|
|
1433
|
+
let inc: () => void = counter.getIncrement();
|
|
1434
|
+
inc(); // 1
|
|
1435
|
+
inc(); // 2
|
|
1436
|
+
```
|
|
1437
|
+
|
|
1438
|
+
#### 在函数表达式中不可以访问未声明的变量或函数(包括自身)@uts110111165
|
|
1439
|
+
|
|
1440
|
+
<!-- UTSDIFFTSJSON.UTS110111165.type -->
|
|
1441
|
+
|
|
1442
|
+
<!-- UTSDIFFTSJSON.UTS110111165.code -->
|
|
1443
|
+
|
|
1444
|
+
<!-- UTSDIFFTSJSON.UTS110111165.description -->
|
|
1445
|
+
|
|
1446
|
+
<!-- UTSDIFFTSJSON.UTS110111165.compatibility -->
|
|
1447
|
+
|
|
1448
|
+
TypeScript写法:
|
|
1449
|
+
|
|
1450
|
+
```ts
|
|
1451
|
+
const fn = function () {
|
|
1452
|
+
console.log(fn)
|
|
1453
|
+
}
|
|
1454
|
+
fn()
|
|
1455
|
+
```
|
|
1456
|
+
|
|
1457
|
+
UTS正确写法:
|
|
1458
|
+
|
|
1459
|
+
```ts
|
|
1460
|
+
let fn: (() => void) | null = null
|
|
1461
|
+
fn = function () {
|
|
1462
|
+
console.log(fn) // 此时 fn 可以正常访问
|
|
1463
|
+
fn!() // 如果需要调用就必须要加`!`
|
|
1464
|
+
}
|
|
1465
|
+
fn()
|
|
1466
|
+
```
|
|
1467
|
+
|
|
1468
|
+
#### 不支持函数分配给接口 @uts120000000
|
|
1469
|
+
|
|
1470
|
+
<!-- UTSDIFFTSJSON.UTS120000000.type -->
|
|
1471
|
+
|
|
1472
|
+
<!-- UTSDIFFTSJSON.UTS120000000.code -->
|
|
1473
|
+
|
|
1474
|
+
<!-- UTSDIFFTSJSON.UTS120000000.description -->
|
|
1475
|
+
|
|
1476
|
+
<!-- UTSDIFFTSJSON.UTS120000000.compatibility -->
|
|
1477
|
+
|
|
1478
|
+
TypeScript写法:
|
|
1479
|
+
|
|
1480
|
+
```ts
|
|
1481
|
+
interface MyFunction {
|
|
1482
|
+
}
|
|
1483
|
+
const myFunction1: MyFunction = () => { };
|
|
1484
|
+
```
|
|
1485
|
+
|
|
1486
|
+
UTS正确写法:
|
|
1487
|
+
|
|
1488
|
+
```ts
|
|
1489
|
+
|
|
1490
|
+
const MyFunction = () => { };
|
|
1491
|
+
```
|
|
1492
|
+
|
|
1493
|
+
|
|
1494
|
+
### 5. 模块和命名空间
|
|
1495
|
+
|
|
1496
|
+
#### 不支持命名空间 @uts110111140
|
|
1497
|
+
|
|
1498
|
+
<!-- UTSDIFFTSJSON.UTS110111140.type -->
|
|
1499
|
+
|
|
1500
|
+
<!-- UTSDIFFTSJSON.UTS110111140.code -->
|
|
1501
|
+
|
|
1502
|
+
<!-- UTSDIFFTSJSON.UTS110111140.description -->
|
|
1503
|
+
|
|
1504
|
+
<!-- UTSDIFFTSJSON.UTS110111140.compatibility -->
|
|
1505
|
+
|
|
1506
|
+
TypeScript写法:
|
|
1507
|
+
|
|
1508
|
+
```ts
|
|
1509
|
+
namespace MyNamespace {
|
|
1510
|
+
export let x: number;
|
|
1511
|
+
}
|
|
1512
|
+
```
|
|
1513
|
+
|
|
1514
|
+
UTS正确写法:
|
|
1515
|
+
|
|
1516
|
+
```ts
|
|
1517
|
+
// UTS 不支持命名空间,使用模块替代
|
|
1518
|
+
// file: utils.uts
|
|
1519
|
+
export let x: number = 10;
|
|
1520
|
+
|
|
1521
|
+
// 在其他文件中导入
|
|
1522
|
+
import { x } from "./utils.uts";
|
|
1523
|
+
console.log(x);
|
|
1524
|
+
```
|
|
1525
|
+
|
|
1526
|
+
#### 不支持 require 和 import 赋值表达式 @uts110111141
|
|
1527
|
+
|
|
1528
|
+
<!-- UTSDIFFTSJSON.UTS110111141.type -->
|
|
1529
|
+
|
|
1530
|
+
<!-- UTSDIFFTSJSON.UTS110111141.code -->
|
|
1531
|
+
|
|
1532
|
+
<!-- UTSDIFFTSJSON.UTS110111141.description -->
|
|
1533
|
+
|
|
1534
|
+
<!-- UTSDIFFTSJSON.UTS110111141.compatibility -->
|
|
1535
|
+
|
|
1536
|
+
TypeScript写法:
|
|
1537
|
+
|
|
1538
|
+
```ts
|
|
1539
|
+
import m = require("mod");
|
|
1540
|
+
```
|
|
1541
|
+
|
|
1542
|
+
UTS正确写法:
|
|
1543
|
+
|
|
1544
|
+
```ts
|
|
1545
|
+
import * as m from "mod";
|
|
1546
|
+
```
|
|
1547
|
+
|
|
1548
|
+
#### 不支持 export = ...语法 @uts110111142
|
|
1549
|
+
|
|
1550
|
+
<!-- UTSDIFFTSJSON.UTS110111142.type -->
|
|
1551
|
+
|
|
1552
|
+
<!-- UTSDIFFTSJSON.UTS110111142.code -->
|
|
1553
|
+
|
|
1554
|
+
<!-- UTSDIFFTSJSON.UTS110111142.description -->
|
|
1555
|
+
|
|
1556
|
+
<!-- UTSDIFFTSJSON.UTS110111142.compatibility -->
|
|
1557
|
+
|
|
1558
|
+
TypeScript写法:
|
|
1559
|
+
|
|
1560
|
+
```ts
|
|
1561
|
+
// module1
|
|
1562
|
+
export = Point;
|
|
1563
|
+
|
|
1564
|
+
class Point {
|
|
1565
|
+
constructor(x: number, y: number) {}
|
|
1566
|
+
static origin = new Point(0, 0);
|
|
1567
|
+
}
|
|
1568
|
+
|
|
1569
|
+
// module2
|
|
1570
|
+
import Pt = require("module1");
|
|
1571
|
+
|
|
1572
|
+
let p = Pt.Point.origin;
|
|
1573
|
+
```
|
|
1574
|
+
|
|
1575
|
+
UTS正确写法:
|
|
1576
|
+
|
|
1577
|
+
```ts
|
|
1578
|
+
// module1
|
|
1579
|
+
export class Point {
|
|
1580
|
+
constructor(x: number, y: number) {}
|
|
1581
|
+
static origin = new Point(0, 0);
|
|
1582
|
+
}
|
|
1583
|
+
|
|
1584
|
+
// module2
|
|
1585
|
+
import * as Pt from "module1";
|
|
1586
|
+
|
|
1587
|
+
let p = Pt.Point.origin;
|
|
1588
|
+
```
|
|
1589
|
+
|
|
1590
|
+
### 6. 类型检查和转换
|
|
1591
|
+
|
|
1592
|
+
#### 使用 instanceof 和 as 进行类型保护 @uts110111143
|
|
1593
|
+
|
|
1594
|
+
<!-- UTSDIFFTSJSON.UTS110111143.type -->
|
|
1595
|
+
|
|
1596
|
+
<!-- UTSDIFFTSJSON.UTS110111143.code -->
|
|
1597
|
+
|
|
1598
|
+
<!-- UTSDIFFTSJSON.UTS110111143.description -->
|
|
1599
|
+
|
|
1600
|
+
<!-- UTSDIFFTSJSON.UTS110111143.compatibility -->
|
|
1601
|
+
|
|
1602
|
+
TypeScript写法:
|
|
1603
|
+
|
|
1604
|
+
```ts
|
|
1605
|
+
class Foo {
|
|
1606
|
+
foo: string = "";
|
|
1607
|
+
common: string = "";
|
|
1608
|
+
}
|
|
1609
|
+
|
|
1610
|
+
class Bar {
|
|
1611
|
+
bar: string = "";
|
|
1612
|
+
common: string = "";
|
|
1613
|
+
}
|
|
1614
|
+
|
|
1615
|
+
function isFoo(arg: any): arg is Foo {
|
|
1616
|
+
return arg.foo !== undefined;
|
|
1617
|
+
}
|
|
1618
|
+
|
|
1619
|
+
function doStuff(arg: Foo | Bar) {
|
|
1620
|
+
if (isFoo(arg)) {
|
|
1621
|
+
console.log(arg.foo); // OK
|
|
1622
|
+
console.log(arg.bar); // 编译时错误
|
|
1623
|
+
} else {
|
|
1624
|
+
console.log(arg.foo); // 编译时错误
|
|
1625
|
+
console.log(arg.bar); // OK
|
|
1626
|
+
}
|
|
1627
|
+
}
|
|
1628
|
+
|
|
1629
|
+
doStuff({ foo: 123, common: "123" });
|
|
1630
|
+
doStuff({ bar: 123, common: "123" });
|
|
1631
|
+
```
|
|
1632
|
+
|
|
1633
|
+
UTS正确写法:
|
|
1634
|
+
|
|
1635
|
+
```ts
|
|
1636
|
+
class Foo {
|
|
1637
|
+
foo: string = "";
|
|
1638
|
+
common: string = "";
|
|
1639
|
+
}
|
|
1640
|
+
|
|
1641
|
+
class Bar {
|
|
1642
|
+
bar: string = "";
|
|
1643
|
+
common: string = "";
|
|
1644
|
+
}
|
|
1645
|
+
|
|
1646
|
+
function isFoo(arg: any): boolean {
|
|
1647
|
+
return arg instanceof Foo;
|
|
1648
|
+
}
|
|
1649
|
+
|
|
1650
|
+
function doStuff(arg: any): void {
|
|
1651
|
+
if (isFoo(arg)) {
|
|
1652
|
+
let fooArg = arg as Foo;
|
|
1653
|
+
console.log(fooArg.foo); // OK
|
|
1654
|
+
console.log(arg.bar); // 编译时错误
|
|
1655
|
+
} else {
|
|
1656
|
+
let barArg = arg as Bar;
|
|
1657
|
+
console.log(arg.foo); // 编译时错误
|
|
1658
|
+
console.log(barArg.bar); // OK
|
|
1659
|
+
}
|
|
1660
|
+
}
|
|
1661
|
+
|
|
1662
|
+
function main(): void {
|
|
1663
|
+
doStuff(new Foo());
|
|
1664
|
+
doStuff(new Bar());
|
|
1665
|
+
}
|
|
1666
|
+
```
|
|
1667
|
+
|
|
1668
|
+
#### 类型转换仅支持 as T 语法 @uts110111153
|
|
1669
|
+
|
|
1670
|
+
<!-- UTSDIFFTSJSON.UTS110111153.type -->
|
|
1671
|
+
|
|
1672
|
+
<!-- UTSDIFFTSJSON.UTS110111153.code -->
|
|
1673
|
+
|
|
1674
|
+
<!-- UTSDIFFTSJSON.UTS110111153.description -->
|
|
1675
|
+
|
|
1676
|
+
<!-- UTSDIFFTSJSON.UTS110111153.compatibility -->
|
|
1677
|
+
|
|
1678
|
+
TypeScript写法:
|
|
1679
|
+
|
|
1680
|
+
```ts
|
|
1681
|
+
class Shape {}
|
|
1682
|
+
class Circle extends Shape {
|
|
1683
|
+
x: number = 5;
|
|
1684
|
+
}
|
|
1685
|
+
class Square extends Shape {
|
|
1686
|
+
y: string = "a";
|
|
1687
|
+
}
|
|
1688
|
+
|
|
1689
|
+
function createShape(): Shape {
|
|
1690
|
+
return new Circle();
|
|
1691
|
+
}
|
|
1692
|
+
|
|
1693
|
+
let c1 = <Circle>createShape();
|
|
1694
|
+
|
|
1695
|
+
let c2 = createShape() as Circle;
|
|
1696
|
+
|
|
1697
|
+
// 如果转换错误,不会产生编译时或运行时报错
|
|
1698
|
+
let c3 = createShape() as Square;
|
|
1699
|
+
console.log(c3.y); // undefined
|
|
1700
|
+
|
|
1701
|
+
// 在TS中,由于`as`关键字不会在运行时生效,所以`instanceof`的左操作数不会在运行时被装箱成引用类型
|
|
1702
|
+
let e1 = (5.0 as Number) instanceof Number; // false
|
|
1703
|
+
|
|
1704
|
+
// 创建Number对象,获得预期结果:
|
|
1705
|
+
let e2 = new Number(5.0) instanceof Number; // true
|
|
1706
|
+
```
|
|
1707
|
+
|
|
1708
|
+
UTS正确写法:
|
|
1709
|
+
|
|
1710
|
+
```ts
|
|
1711
|
+
class Shape {}
|
|
1712
|
+
class Circle extends Shape {
|
|
1713
|
+
x: number = 5;
|
|
1714
|
+
constructor() {
|
|
1715
|
+
super();
|
|
1716
|
+
}
|
|
1717
|
+
}
|
|
1718
|
+
class Square extends Shape {
|
|
1719
|
+
y: string = "a";
|
|
1720
|
+
constructor() {
|
|
1721
|
+
super();
|
|
1722
|
+
}
|
|
1723
|
+
}
|
|
1724
|
+
|
|
1725
|
+
function createShape(): Shape {
|
|
1726
|
+
return new Circle();
|
|
1727
|
+
}
|
|
1728
|
+
|
|
1729
|
+
let c2 = createShape() as Circle;
|
|
1730
|
+
|
|
1731
|
+
// 运行时抛出ClassCastException异常:
|
|
1732
|
+
let c3 = createShape() as Square;
|
|
1733
|
+
```
|
|
1734
|
+
|
|
1735
|
+
### 7. 特殊语言特性
|
|
1736
|
+
|
|
1737
|
+
#### 不支持 Symbol() @uts110111154
|
|
1738
|
+
|
|
1739
|
+
<!-- UTSDIFFTSJSON.UTS110111154.type -->
|
|
1740
|
+
|
|
1741
|
+
<!-- UTSDIFFTSJSON.UTS110111154.code -->
|
|
1742
|
+
|
|
1743
|
+
<!-- UTSDIFFTSJSON.UTS110111154.description -->
|
|
1744
|
+
|
|
1745
|
+
<!-- UTSDIFFTSJSON.UTS110111154.compatibility -->
|
|
1746
|
+
|
|
1747
|
+
TypeScript写法:
|
|
1748
|
+
|
|
1749
|
+
```ts
|
|
1750
|
+
// Symbol 用于创建唯一标识符
|
|
1751
|
+
let sym1: symbol = Symbol("key");
|
|
1752
|
+
let sym2: symbol = Symbol("key");
|
|
1753
|
+
console.log(sym1 == sym2); // false
|
|
1754
|
+
|
|
1755
|
+
// 作为对象属性
|
|
1756
|
+
let obj: any = {};
|
|
1757
|
+
obj[sym1] = "value1";
|
|
1758
|
+
console.log(obj[sym1]); // "value1"
|
|
1759
|
+
```
|
|
1760
|
+
|
|
1761
|
+
UTS正确写法:
|
|
1762
|
+
|
|
1763
|
+
```ts
|
|
1764
|
+
// 使用具体的唯一字符串字面量定义类型
|
|
1765
|
+
type MyObj = {
|
|
1766
|
+
key1: string;
|
|
1767
|
+
key2: string;
|
|
1768
|
+
};
|
|
1769
|
+
|
|
1770
|
+
let obj: MyObj = {
|
|
1771
|
+
key1: "value1",
|
|
1772
|
+
key2: "value2",
|
|
1773
|
+
};
|
|
1774
|
+
console.log(obj.key1); // "value1"
|
|
1775
|
+
```
|
|
1776
|
+
|
|
1777
|
+
#### 不支持 index signature @uts110111144
|
|
1778
|
+
|
|
1779
|
+
<!-- UTSDIFFTSJSON.UTS110111144.type -->
|
|
1780
|
+
|
|
1781
|
+
<!-- UTSDIFFTSJSON.UTS110111144.code -->
|
|
1782
|
+
|
|
1783
|
+
<!-- UTSDIFFTSJSON.UTS110111144.description -->
|
|
1784
|
+
|
|
1785
|
+
<!-- UTSDIFFTSJSON.UTS110111144.compatibility -->
|
|
1786
|
+
|
|
1787
|
+
TypeScript写法:
|
|
1788
|
+
|
|
1789
|
+
```ts
|
|
1790
|
+
// 带index signature的接口:
|
|
1791
|
+
interface StringArray {
|
|
1792
|
+
[index: number]: string;
|
|
1793
|
+
}
|
|
1794
|
+
|
|
1795
|
+
function getStringArray(): StringArray {
|
|
1796
|
+
return ["a", "b", "c"];
|
|
1797
|
+
}
|
|
1798
|
+
|
|
1799
|
+
const myArray: StringArray = getStringArray();
|
|
1800
|
+
const secondItem = myArray[1];
|
|
1801
|
+
```
|
|
1802
|
+
|
|
1803
|
+
UTS正确写法:
|
|
1804
|
+
|
|
1805
|
+
```ts
|
|
1806
|
+
class X {
|
|
1807
|
+
public f: string[] = ["a", "b", "c"];
|
|
1808
|
+
}
|
|
1809
|
+
|
|
1810
|
+
let myArray: X = new X();
|
|
1811
|
+
const secondItem = myArray.f[1];
|
|
1812
|
+
```
|
|
1813
|
+
|
|
1814
|
+
#### 不支持声明合并 @uts110111145
|
|
1815
|
+
|
|
1816
|
+
<!-- UTSDIFFTSJSON.UTS110111145.type -->
|
|
1817
|
+
|
|
1818
|
+
<!-- UTSDIFFTSJSON.UTS110111145.code -->
|
|
1819
|
+
|
|
1820
|
+
<!-- UTSDIFFTSJSON.UTS110111145.description -->
|
|
1821
|
+
|
|
1822
|
+
<!-- UTSDIFFTSJSON.UTS110111145.compatibility -->
|
|
1823
|
+
|
|
1824
|
+
TypeScript写法:
|
|
1825
|
+
|
|
1826
|
+
```ts
|
|
1827
|
+
interface Document {
|
|
1828
|
+
createElement(tagName: any): Element;
|
|
1829
|
+
}
|
|
1830
|
+
|
|
1831
|
+
interface Document {
|
|
1832
|
+
createElement(tagName: string): HTMLElement;
|
|
1833
|
+
}
|
|
1834
|
+
|
|
1835
|
+
interface Document {
|
|
1836
|
+
createElement(tagName: number): HTMLDivElement;
|
|
1837
|
+
createElement(tagName: boolean): HTMLSpanElement;
|
|
1838
|
+
createElement(tagName: string, value: number): HTMLCanvasElement;
|
|
1839
|
+
}
|
|
1840
|
+
```
|
|
1841
|
+
|
|
1842
|
+
UTS正确写法:
|
|
1843
|
+
|
|
1844
|
+
```ts
|
|
1845
|
+
interface Document {
|
|
1846
|
+
createElement(tagName: number): HTMLDivElement;
|
|
1847
|
+
createElement(tagName: boolean): HTMLSpanElement;
|
|
1848
|
+
createElement(tagName: string, value: number): HTMLCanvasElement;
|
|
1849
|
+
createElement(tagName: string): HTMLElement;
|
|
1850
|
+
createElement(tagName: Object): Element;
|
|
1851
|
+
}
|
|
1852
|
+
```
|
|
1853
|
+
|
|
1854
|
+
#### 不支持生成器函数 @uts110111146
|
|
1855
|
+
|
|
1856
|
+
<!-- UTSDIFFTSJSON.UTS110111146.type -->
|
|
1857
|
+
|
|
1858
|
+
<!-- UTSDIFFTSJSON.UTS110111146.code -->
|
|
1859
|
+
|
|
1860
|
+
<!-- UTSDIFFTSJSON.UTS110111146.description -->
|
|
1861
|
+
|
|
1862
|
+
<!-- UTSDIFFTSJSON.UTS110111146.compatibility -->
|
|
1863
|
+
|
|
1864
|
+
TypeScript写法:
|
|
1865
|
+
|
|
1866
|
+
```ts
|
|
1867
|
+
function* counter(start: number, end: number) {
|
|
1868
|
+
for (let i = start; i <= end; i++) {
|
|
1869
|
+
yield i;
|
|
1870
|
+
}
|
|
1871
|
+
}
|
|
1872
|
+
|
|
1873
|
+
for (let num of counter(1, 5)) {
|
|
1874
|
+
console.log(num);
|
|
1875
|
+
}
|
|
1876
|
+
```
|
|
1877
|
+
|
|
1878
|
+
UTS正确写法:
|
|
1879
|
+
|
|
1880
|
+
```ts
|
|
1881
|
+
async function complexNumberProcessing(num: number): Promise<number> {
|
|
1882
|
+
// ...
|
|
1883
|
+
return num;
|
|
1884
|
+
}
|
|
1885
|
+
|
|
1886
|
+
async function foo() {
|
|
1887
|
+
for (let i = 1; i <= 5; i++) {
|
|
1888
|
+
await complexNumberProcessing(i);
|
|
1889
|
+
}
|
|
1890
|
+
}
|
|
1891
|
+
|
|
1892
|
+
foo();
|
|
1893
|
+
```
|
|
1894
|
+
|
|
1895
|
+
#### 不支持 JSX 表达式 @uts110111155
|
|
1896
|
+
|
|
1897
|
+
<!-- UTSDIFFTSJSON.UTS110111155.type -->
|
|
1898
|
+
|
|
1899
|
+
<!-- UTSDIFFTSJSON.UTS110111155.code -->
|
|
1900
|
+
|
|
1901
|
+
<!-- UTSDIFFTSJSON.UTS110111155.description -->
|
|
1902
|
+
|
|
1903
|
+
<!-- UTSDIFFTSJSON.UTS110111155.compatibility -->
|
|
1904
|
+
|
|
1905
|
+
TypeScript写法:
|
|
1906
|
+
|
|
1907
|
+
```ts
|
|
1908
|
+
// React TSX 示例
|
|
1909
|
+
function Welcome(props: { name: string }) {
|
|
1910
|
+
return <h1>Hello, {props.name}</h1>;
|
|
1911
|
+
}
|
|
1912
|
+
```
|
|
1913
|
+
|
|
1914
|
+
UTS正确写法:
|
|
1915
|
+
|
|
1916
|
+
```vue
|
|
1917
|
+
<template>
|
|
1918
|
+
<text>Hello, {{ name }}</text>
|
|
1919
|
+
</template>
|
|
1920
|
+
<script setup>
|
|
1921
|
+
defineProps({
|
|
1922
|
+
name: {
|
|
1923
|
+
type: String,
|
|
1924
|
+
default: "",
|
|
1925
|
+
},
|
|
1926
|
+
});
|
|
1927
|
+
</script>
|
|
1928
|
+
```
|
|
1929
|
+
|
|
1930
|
+
#### 不支持 with 语句 @uts110111156
|
|
1931
|
+
|
|
1932
|
+
<!-- UTSDIFFTSJSON.UTS110111156.type -->
|
|
1933
|
+
|
|
1934
|
+
<!-- UTSDIFFTSJSON.UTS110111156.code -->
|
|
1935
|
+
|
|
1936
|
+
<!-- UTSDIFFTSJSON.UTS110111156.description -->
|
|
1937
|
+
|
|
1938
|
+
<!-- UTSDIFFTSJSON.UTS110111156.compatibility -->
|
|
1939
|
+
|
|
1940
|
+
TypeScript写法:
|
|
1941
|
+
|
|
1942
|
+
```ts
|
|
1943
|
+
with (Math) {
|
|
1944
|
+
// 编译时错误, 但是仍能生成JavaScript代码
|
|
1945
|
+
let r: number = 42;
|
|
1946
|
+
let area: number = PI * r * r;
|
|
1947
|
+
}
|
|
1948
|
+
```
|
|
1949
|
+
|
|
1950
|
+
UTS正确写法:
|
|
1951
|
+
|
|
1952
|
+
```ts
|
|
1953
|
+
let r: number = 42;
|
|
1954
|
+
let area: number = Math.PI * r * r;
|
|
1955
|
+
```
|
|
1956
|
+
|
|
1957
|
+
#### 不支持 globalThis @uts110111147
|
|
1958
|
+
|
|
1959
|
+
<!-- UTSDIFFTSJSON.UTS110111147.type -->
|
|
1960
|
+
|
|
1961
|
+
<!-- UTSDIFFTSJSON.UTS110111147.code -->
|
|
1962
|
+
|
|
1963
|
+
<!-- UTSDIFFTSJSON.UTS110111147.description -->
|
|
1964
|
+
|
|
1965
|
+
<!-- UTSDIFFTSJSON.UTS110111147.compatibility -->
|
|
1966
|
+
|
|
1967
|
+
TypeScript写法:
|
|
1968
|
+
|
|
1969
|
+
```ts
|
|
1970
|
+
// 全局文件中
|
|
1971
|
+
var abc = 100;
|
|
1972
|
+
|
|
1973
|
+
// 从上面引用'abc'
|
|
1974
|
+
let x = globalThis.abc;
|
|
1975
|
+
```
|
|
1976
|
+
|
|
1977
|
+
UTS正确写法:
|
|
1978
|
+
|
|
1979
|
+
```ts
|
|
1980
|
+
// file1
|
|
1981
|
+
export let abc: number = 100;
|
|
1982
|
+
|
|
1983
|
+
// file2
|
|
1984
|
+
import * as M from "file1";
|
|
1985
|
+
|
|
1986
|
+
let x = M.abc;
|
|
1987
|
+
```
|
|
1988
|
+
|
|
1989
|
+
### 8. 运算符和表达式
|
|
1990
|
+
|
|
1991
|
+
#### 一元运算符+、-和~仅适用于数值类型 @uts110111148
|
|
1992
|
+
|
|
1993
|
+
<!-- UTSDIFFTSJSON.UTS110111148.type -->
|
|
1994
|
+
|
|
1995
|
+
<!-- UTSDIFFTSJSON.UTS110111148.code -->
|
|
1996
|
+
|
|
1997
|
+
<!-- UTSDIFFTSJSON.UTS110111148.description -->
|
|
1998
|
+
|
|
1999
|
+
<!-- UTSDIFFTSJSON.UTS110111148.compatibility -->
|
|
2000
|
+
|
|
2001
|
+
TypeScript写法:
|
|
2002
|
+
|
|
2003
|
+
```ts
|
|
2004
|
+
let a = +5; // 5(number类型)
|
|
2005
|
+
let b = +"5"; // 5(number类型)
|
|
2006
|
+
let c = -5; // -5(number类型)
|
|
2007
|
+
let d = -"5"; // -5(number类型)
|
|
2008
|
+
let e = ~5; // -6(number类型)
|
|
2009
|
+
let f = ~"5"; // -6(number类型)
|
|
2010
|
+
let g = +"string"; // NaN(number类型)
|
|
2011
|
+
|
|
2012
|
+
function returnTen(): string {
|
|
2013
|
+
return "-10";
|
|
2014
|
+
}
|
|
2015
|
+
|
|
2016
|
+
function returnString(): string {
|
|
2017
|
+
return "string";
|
|
2018
|
+
}
|
|
2019
|
+
|
|
2020
|
+
let x = +returnTen(); // -10(number类型)
|
|
2021
|
+
let y = +returnString(); // NaN
|
|
2022
|
+
```
|
|
2023
|
+
|
|
2024
|
+
UTS正确写法:
|
|
2025
|
+
|
|
2026
|
+
```ts
|
|
2027
|
+
let a = +5; // 5(number类型)
|
|
2028
|
+
let b = +"5"; // 编译时错误
|
|
2029
|
+
let c = -5; // -5(number类型)
|
|
2030
|
+
let d = -"5"; // 编译时错误
|
|
2031
|
+
let e = ~5; // -6(number类型)
|
|
2032
|
+
let f = ~"5"; // 编译时错误
|
|
2033
|
+
let g = +"string"; // 编译时错误
|
|
2034
|
+
|
|
2035
|
+
function returnTen(): string {
|
|
2036
|
+
return "-10";
|
|
2037
|
+
}
|
|
2038
|
+
|
|
2039
|
+
function returnString(): string {
|
|
2040
|
+
return "string";
|
|
2041
|
+
}
|
|
2042
|
+
|
|
2043
|
+
let x = +returnTen(); // 编译时错误
|
|
2044
|
+
let y = +returnString(); // 编译时错误
|
|
2045
|
+
```
|
|
2046
|
+
|
|
2047
|
+
#### 不支持赋值语句返回值 @uts110111160
|
|
2048
|
+
|
|
2049
|
+
<!-- UTSDIFFTSJSON.UTS110111160.type -->
|
|
2050
|
+
|
|
2051
|
+
<!-- UTSDIFFTSJSON.UTS110111160.code -->
|
|
2052
|
+
|
|
2053
|
+
<!-- UTSDIFFTSJSON.UTS110111160.description -->
|
|
2054
|
+
|
|
2055
|
+
<!-- UTSDIFFTSJSON.UTS110111160.compatibility -->
|
|
2056
|
+
|
|
2057
|
+
TypeScript写法:
|
|
2058
|
+
|
|
2059
|
+
```ts
|
|
2060
|
+
let x, y;
|
|
2061
|
+
y = x = 5; // x和y都被赋值为5
|
|
2062
|
+
|
|
2063
|
+
// 在条件中使用赋值
|
|
2064
|
+
let arr = [1, 2, 3];
|
|
2065
|
+
let item;
|
|
2066
|
+
while ((item = arr.pop())) {
|
|
2067
|
+
console.log(item);
|
|
2068
|
+
}
|
|
2069
|
+
|
|
2070
|
+
// 在正则匹配中常用的模式
|
|
2071
|
+
let regex = /\w+/g;
|
|
2072
|
+
let text = "hello world";
|
|
2073
|
+
let match;
|
|
2074
|
+
while ((match = regex.exec(text))) {
|
|
2075
|
+
console.log(match[0]);
|
|
2076
|
+
}
|
|
2077
|
+
```
|
|
2078
|
+
|
|
2079
|
+
UTS正确写法:
|
|
2080
|
+
|
|
2081
|
+
```ts
|
|
2082
|
+
let x = 5;
|
|
2083
|
+
let y = x; // 必须分开赋值
|
|
2084
|
+
|
|
2085
|
+
// 正确的循环写法
|
|
2086
|
+
let arr = [1, 2, 3];
|
|
2087
|
+
let item = arr.pop();
|
|
2088
|
+
while (item != null) {
|
|
2089
|
+
console.log(item);
|
|
2090
|
+
item = arr.pop();
|
|
2091
|
+
}
|
|
2092
|
+
|
|
2093
|
+
// 正确的正则匹配写法
|
|
2094
|
+
let regex = /\w+/g;
|
|
2095
|
+
let text = "hello world";
|
|
2096
|
+
let match = regex.exec(text);
|
|
2097
|
+
while (match != null) {
|
|
2098
|
+
console.log(match[0]);
|
|
2099
|
+
match = regex.exec(text);
|
|
2100
|
+
}
|
|
2101
|
+
```
|
|
2102
|
+
|
|
2103
|
+
#### 不支持 delete 运算符 @uts110111149
|
|
2104
|
+
|
|
2105
|
+
<!-- UTSDIFFTSJSON.UTS110111149.type -->
|
|
2106
|
+
|
|
2107
|
+
<!-- UTSDIFFTSJSON.UTS110111149.code -->
|
|
2108
|
+
|
|
2109
|
+
<!-- UTSDIFFTSJSON.UTS110111149.description -->
|
|
2110
|
+
|
|
2111
|
+
<!-- UTSDIFFTSJSON.UTS110111149.compatibility -->
|
|
2112
|
+
|
|
2113
|
+
TypeScript写法:
|
|
2114
|
+
|
|
2115
|
+
```ts
|
|
2116
|
+
interface Person {
|
|
2117
|
+
name: string;
|
|
2118
|
+
age?: number;
|
|
2119
|
+
}
|
|
2120
|
+
|
|
2121
|
+
let person: Person = { name: "John", age: 30 };
|
|
2122
|
+
|
|
2123
|
+
// 删除可选属性
|
|
2124
|
+
delete person.age;
|
|
2125
|
+
console.log(person.age); // undefined
|
|
2126
|
+
|
|
2127
|
+
// 删除对象属性
|
|
2128
|
+
let obj: any = { x: 1, y: 2 };
|
|
2129
|
+
delete obj.x;
|
|
2130
|
+
console.log(obj.x); // undefined
|
|
2131
|
+
```
|
|
2132
|
+
|
|
2133
|
+
UTS正确写法:
|
|
2134
|
+
|
|
2135
|
+
```ts
|
|
2136
|
+
type Person = {
|
|
2137
|
+
name: string;
|
|
2138
|
+
age: number | null;
|
|
2139
|
+
};
|
|
2140
|
+
|
|
2141
|
+
let person: Person = { name: "John", age: 30 };
|
|
2142
|
+
|
|
2143
|
+
// 使用 null 替代删除
|
|
2144
|
+
person.age = null;
|
|
2145
|
+
console.log(person.age); // null
|
|
2146
|
+
|
|
2147
|
+
// 使用新对象替代删除属性
|
|
2148
|
+
type Point = { x: number; y: number };
|
|
2149
|
+
let obj: Point = { x: 1, y: 2 };
|
|
2150
|
+
type PartialPoint = { y: number };
|
|
2151
|
+
let newObj: PartialPoint = { y: obj.y };
|
|
2152
|
+
console.log(newObj.y); // 2
|
|
2153
|
+
```
|
|
2154
|
+
|
|
2155
|
+
#### 逗号运算符仅用在 for 循环语句中 @uts110111157
|
|
2156
|
+
|
|
2157
|
+
<!-- UTSDIFFTSJSON.UTS110111157.type -->
|
|
2158
|
+
|
|
2159
|
+
<!-- UTSDIFFTSJSON.UTS110111157.code -->
|
|
2160
|
+
|
|
2161
|
+
<!-- UTSDIFFTSJSON.UTS110111157.description -->
|
|
2162
|
+
|
|
2163
|
+
<!-- UTSDIFFTSJSON.UTS110111157.compatibility -->
|
|
2164
|
+
|
|
2165
|
+
TypeScript写法:
|
|
2166
|
+
|
|
2167
|
+
```ts
|
|
2168
|
+
for (let i = 0, j = 0; i < 10; ++i, j += 2) {
|
|
2169
|
+
// ...
|
|
2170
|
+
}
|
|
2171
|
+
|
|
2172
|
+
let x = 0;
|
|
2173
|
+
x = (++x, x++); // 1
|
|
2174
|
+
```
|
|
2175
|
+
|
|
2176
|
+
UTS正确写法:
|
|
2177
|
+
|
|
2178
|
+
```ts
|
|
2179
|
+
for (let i = 0, j = 0; i < 10; ++i, j += 2) {
|
|
2180
|
+
// ...
|
|
2181
|
+
}
|
|
2182
|
+
// 通过语句表示执行顺序,而非逗号运算符
|
|
2183
|
+
let x = 0;
|
|
2184
|
+
++x;
|
|
2185
|
+
x = x++;
|
|
2186
|
+
```
|
|
2187
|
+
|
|
2188
|
+
#### 限制 throw 语句中表达式的类型 @uts110111158
|
|
2189
|
+
|
|
2190
|
+
<!-- UTSDIFFTSJSON.UTS110111158.type -->
|
|
2191
|
+
|
|
2192
|
+
<!-- UTSDIFFTSJSON.UTS110111158.code -->
|
|
2193
|
+
|
|
2194
|
+
<!-- UTSDIFFTSJSON.UTS110111158.description -->
|
|
2195
|
+
|
|
2196
|
+
<!-- UTSDIFFTSJSON.UTS110111158.compatibility -->
|
|
2197
|
+
|
|
2198
|
+
TypeScript写法:
|
|
2199
|
+
|
|
2200
|
+
```ts
|
|
2201
|
+
throw 4;
|
|
2202
|
+
throw "";
|
|
2203
|
+
throw new Error();
|
|
2204
|
+
```
|
|
2205
|
+
|
|
2206
|
+
UTS正确写法:
|
|
2207
|
+
|
|
2208
|
+
```ts
|
|
2209
|
+
throw new Error();
|
|
2210
|
+
```
|
|
2211
|
+
|
|
2212
|
+
#### 数组越界访问 @uts210111100
|
|
2213
|
+
|
|
2214
|
+
<!-- UTSDIFFTSJSON.UTS210111100.type -->
|
|
2215
|
+
|
|
2216
|
+
<!-- UTSDIFFTSJSON.UTS210111100.code -->
|
|
2217
|
+
|
|
2218
|
+
<!-- UTSDIFFTSJSON.UTS210111100.description -->
|
|
2219
|
+
|
|
2220
|
+
<!-- UTSDIFFTSJSON.UTS210111100.compatibility -->
|
|
2221
|
+
|
|
2222
|
+
TypeScript写法:
|
|
2223
|
+
|
|
2224
|
+
```ts
|
|
2225
|
+
let arr: number[] = [1, 2, 3];
|
|
2226
|
+
|
|
2227
|
+
// TypeScript/JavaScript 中越界访问返回 undefined
|
|
2228
|
+
console.log(arr[5]); // undefined
|
|
2229
|
+
console.log(arr[-1]); // undefined
|
|
2230
|
+
```
|
|
2231
|
+
|
|
2232
|
+
UTS正确写法:
|
|
2233
|
+
|
|
2234
|
+
```ts
|
|
2235
|
+
const arr: number[] = [1, 2, 3];
|
|
2236
|
+
|
|
2237
|
+
// Kotlin、Swift 中越界访问会抛出运行时异常
|
|
2238
|
+
console.log(arr[5]); // 抛出 IndexOutOfBoundsException
|
|
2239
|
+
console.log(arr[-1]); // 抛出 IndexOutOfBoundsException
|
|
2240
|
+
|
|
2241
|
+
// 正确的做法:在访问前检查边界
|
|
2242
|
+
let index = 5;
|
|
2243
|
+
if (index >= 0 && index < arr.length) {
|
|
2244
|
+
console.log(arr[index]);
|
|
2245
|
+
} else {
|
|
2246
|
+
console.log("索引越界");
|
|
2247
|
+
}
|
|
2248
|
+
```
|
|
2249
|
+
|
|
2250
|
+
### 9. 原型和对象操作
|
|
2251
|
+
|
|
2252
|
+
#### 不支持在原型上赋值 @uts110111159
|
|
2253
|
+
|
|
2254
|
+
<!-- UTSDIFFTSJSON.UTS110111159.type -->
|
|
2255
|
+
|
|
2256
|
+
<!-- UTSDIFFTSJSON.UTS110111159.code -->
|
|
2257
|
+
|
|
2258
|
+
<!-- UTSDIFFTSJSON.UTS110111159.description -->
|
|
2259
|
+
|
|
2260
|
+
<!-- UTSDIFFTSJSON.UTS110111159.compatibility -->
|
|
2261
|
+
|
|
2262
|
+
TypeScript写法:
|
|
2263
|
+
|
|
2264
|
+
```ts
|
|
2265
|
+
let C = function (p) {
|
|
2266
|
+
this.p = p; // 只有在开启noImplicitThis选项时会产生编译时错误
|
|
2267
|
+
};
|
|
2268
|
+
|
|
2269
|
+
C.prototype = {
|
|
2270
|
+
m() {
|
|
2271
|
+
console.log(this.p);
|
|
2272
|
+
},
|
|
2273
|
+
};
|
|
2274
|
+
|
|
2275
|
+
C.prototype.q = function (r: string) {
|
|
2276
|
+
return this.p == r;
|
|
2277
|
+
};
|
|
2278
|
+
```
|
|
2279
|
+
|
|
2280
|
+
UTS正确写法:
|
|
2281
|
+
|
|
2282
|
+
```ts
|
|
2283
|
+
class C {
|
|
2284
|
+
p: string = "";
|
|
2285
|
+
m() {
|
|
2286
|
+
console.log(this.p);
|
|
2287
|
+
}
|
|
2288
|
+
q(r: string) {
|
|
2289
|
+
return this.p == r;
|
|
2290
|
+
}
|
|
2291
|
+
}
|
|
2292
|
+
```
|