提交 946c6033 编写于 作者: D DCloud_LXH

feat: uts

上级 ee74d3a0
......@@ -10,6 +10,7 @@ const config = {
theme: 'vuepress-theme-uni-app-test',
title: 'uni-app官网',
description: 'uni-app,uniCloud,serverless',
evergreen: process.env.NODE_ENV === 'development',
head: [
['link', {
rel: 'shortcut icon',
......
......@@ -37,6 +37,11 @@ export const navbar = [
type: 'link',
link: '/api/'
},
{
text: 'UTS',
type: 'link',
link: '/uts/'
},
{
text: '插件',
type: 'link',
......
......@@ -14,7 +14,7 @@ function simplifySlugText(text) {
return text;
}
const tabs = ['/uniCloud/', '/plugin/', '/worktile/', '/tutorial/', '/collocation/', '/component/', '/api/', '/']
const tabs = ['/uniCloud/', '/plugin/', '/worktile/', '/tutorial/', '/collocation/', '/component/', '/api/', '/uts/', '/']
module.exports = {
isExternal,
......
......@@ -2,7 +2,7 @@
* [插件市场介绍](/plugin/plugin-ext-introduction.md)
* [uni_modules](/plugin/uni_modules.md)
* uts插件
* [uts语法...](/tutorial/syntax-uts.md)
* [uts语法...](/uts/)
* [uts插件开发入门](uts-plugin.md)
* [uts页面组件开发入门](uts-component.md)
* [uts中使用uni api](uts-uni-api.md)
......
......@@ -22,7 +22,7 @@ UTS组件,是UTS插件的一个分支。UTS插件提供了原生API的扩展
继续阅读文档前,开发者需要了解以下前置条件:
- 了解 [uts语法](../tutorial/syntax-uts.md)[uts原生插件](uts-plugin.md)
- 了解 [uts语法](/uts/)[uts原生插件](uts-plugin.md)
- 了解 [Vue组件](../tutorial/vue3-components.md)
......
......@@ -7,7 +7,7 @@
## 1 了解UTS插件是什么
`UTS插件``uni-app`新型插件形式,拥有跨平台,高效率,易调试等优点。[详情](https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#)
`UTS插件``uni-app`新型插件形式,拥有跨平台,高效率,易调试等优点。[详情](/plugin/uts-plugin)
对于Android开发者来说,我们需要了解的是:
......@@ -18,7 +18,7 @@
### 2.1 对于掌握kotlin语言者
因为UTS语法与kotlin很类似,建议快速阅读后,在实践中掌握这UTS语法。[uts语法介绍](https://uniapp.dcloud.net.cn/tutorial/syntax-uts)
因为UTS语法与kotlin很类似,建议快速阅读后,在实践中掌握这UTS语法。[uts语法介绍](/uts/)
### 2.2 对于仅掌握java语言者
......
......@@ -6,7 +6,7 @@
## 1 了解 UTS 插件是什么
UTS 插件是 uni-app 新型插件形式 [详情](https://uniapp.dcloud.net.cn/plugin/uts-plugin.html#)
UTS 插件是 uni-app 新型插件形式 [详情](/plugin/uts-plugin)
对于 iOS 开发者来说,我们需要了解的是:
......@@ -17,7 +17,7 @@ UTS 插件是 uni-app 新型插件形式 [详情](https://uniapp.dcloud.net.cn/p
### 2.1 对于掌握 swift 语言者
因为 UTS 语法与 swift 较类似,建议快速阅读后,在实践中掌握 UTS 语法。[uts语法介绍](https://uniapp.dcloud.net.cn/tutorial/syntax-uts)
因为 UTS 语法与 swift 较类似,建议快速阅读后,在实践中掌握 UTS 语法。[uts语法介绍](/uts/)
### 2.2 对于仅掌握`objective-c`语言者
......
......@@ -18,7 +18,7 @@ uts,全称 uni type script,统一、强类型、脚本语言。
uts 采用了与 ts 基本一致的语法规范,支持绝大部分 ES6 API。
如需详细了解uts语法,另见[uts语法介绍](../tutorial/syntax-uts.md)
如需详细了解uts语法,另见[uts语法介绍](/uts/)
### 什么是uts插件
......
......@@ -3,7 +3,7 @@
## 基本语言和开发规范
uni-app代码编写,基本语言包括js、vue、css。以及ts、scss等css预编译器。
在app端,还支持原生渲染的[nvue](nvue-outline.md),以及可以编译为kotlin和swift的[uts](syntax-uts.md)
在app端,还支持原生渲染的[nvue](nvue-outline.md),以及可以编译为kotlin和swift的[uts](/uts/)
DCloud还提供了使用js编写服务器代码的uniCloud云引擎。所以只需掌握js,你可以开发web、Android、iOS、各家小程序以及服务器等全栈应用。
......
......@@ -26,7 +26,7 @@
* [vue2 升 3 指南](/tutorial/migration-to-vue3.md)
* [ts/typescript 专题](/tutorial/typescript-subject.md)
* [jsx/tsx 语法](/tutorial/syntax-jsx.md)
* [uts语法](syntax-uts.md)
* [uts语法](/uts/)
* 编译器(条件编译)
* [什么是编译器](/tutorial/compiler.md)
* [条件编译处理多端差异](/tutorial/platform.md)
......
此差异已折叠。
## UTS 介绍
**uts 是什么**
uts,全称 uni type script,是一门跨平台的、高性能的、强类型的现代编程语言。
它可以被编译为不同平台的编程语言,如:
- web平台,编译为JavaScript
- Android平台,编译为Kotlin
- iOS平台,编译Swift
uts 采用了与 ts 基本一致的语法规范,支持绝大部分 ES6 API。
但为了跨端,uts进行了一些约束和特定平台的增补。
过去在js引擎下运行支持的语法,大部分在uts的处理下也可以平滑的在kotlin和swift中使用。但有一些无法抹平,需要使用条件编译。和uni-app的条件编译类似,uts也支持条件编译。写在条件编译里的,可以调用平台特有的扩展语法。
### 现状说明
uts是一门语言,对标的是js。目前DCloud还未发布基于uts的ui开发框架。所以现阶段使用uts开发ui是很不方便的(就像没有组件和css,拿js开发界面,还不能跨端)。
现阶段uts适合的场景是开发uni-app的原生插件。因为uts可以直接调用Android和iOS的原生API或jar等库。
很快DCloud会推出基于uts的跨平台响应式ui框架`uvue`,届时开发者可使用vue语法、uni-app的组件和api,来开发纯原生应用,因为它们都被编译为kotlin和swift,不再有js和webview。未来大概的写法参考[hello uni-app x](https://gitcode.net/dcloud/hello-uni-app-x) (此项目还未正式发布,公开版的HBuilderX不能编译此项目,仅供参考写法)
本文是 uts 的基本语法介绍。如想了解 uni-app 下如何开发 uts插件,另见文档[https://uniapp.dcloud.net.cn/plugin/uts-plugin.html](https://uniapp.dcloud.net.cn/plugin/uts-plugin.html)
## 基本语法
### 声明
js是无类型的,TypeScript 的 type 就是类型的意思,给js加上了类型。它的类型定义方式是在变量名后面通过加冒号和类型来进行定义。
uts 中声明变量可以用 let 或 const,详见下。
#### 变量定义(let)
声明一个可重新赋值的变量。语法 `let [变量名] : [类型] = 值;`
> 相当于 TypeScript 中的 let,kotlin 中的 var
```ts
let str :string = "hello"; // 声明一个字符串变量
str = "hello world"; // 重新赋值
```
类型除了 string 之外,更多类型[见下](#基本类型)
#### 常量定义(const)
声明一个只读常量,只能为其赋值一次。语法 `const [变量名] : [类型] = 值;`
> 相当于 TypeScript 中的 const, kotlin 中的 val
```ts
const str :string = "hello"; // 声明一个字符串变量
str = "hello world"; // 报错,不允许重新赋值
```
注意事项:
- 当前 uts 并未限制使用 var 来声明变量,但当使用 var 来声明变量时需要注意不同平台差异
* 编译至 JavaScript 平台时,等同于 JavaScript 平台的 var (存在变量提升现象)
* 编译至 Kotlin 平台时,等同于 Kotlin 平台的 var(允许重新赋值)
- 类型定义的冒号,左右可以有一个空格,也可以没有空格。`let str:string``let str : string``let str :string``let str: string` 都是合法的。
- 不支持 TypeScript 中的联合类型
#### 变量命名规则
在 uts 中,使用变量名需要遵守一定的规则。
- 变量名称可以包含数字和字母。
- 除了下划线 \_ 外,不能包含其他特殊字符,包括空格。
- 变量名不能以数字开头。
> 注意:与 TypeScript 不同的是,uts 不允许以 $ 开头命名变量
#### 类型自动推导
uts具备类型自动推导。在定义变量时如果直接赋值,而不使用冒号定义类型,也可以合法运行。
如下2种写法都是合法的,两个变量都是string类型:
```ts
let s1 :string = "hello";
let s2 = "hello";
```
#### 代码语句的分割
uts的多个代码语句,可以以回车或分号分割。行尾的分号可以省略。如果写在一行,应以分号分割。
如下的代码都是合法的:
```ts
let a:number = 1 //行尾可以不加分号
let b:boolean = false; //行尾可以加分号
let c:number = 3 ; let d:number = 4 // 同行多语句需要用分号分割
```
## 开发指南
- [使用 uts 开发 uni-app 原生插件](https://uniapp.dcloud.net.cn/plugin/uts-plugin.html)
- [Android平台uts开发指南](https://uniapp.dcloud.net.cn/plugin/uts-for-android.html)
* [UTS 介绍](README.md)
* [操作符](operator.md)
* [数据类型](data-type.md)
* [字面量](literal.md)
* [控制流程](control.md)
* [函数](function.md)
* [](class.md)
* [模块](module.md)
* 内置对象和 API
* [Number](buildin-object-api/number.md)
* [String](buildin-object-api/string.md)
* [Array](buildin-object-api/array.md)
* [Set](buildin-object-api/set.md)
* [Map](buildin-object-api/map.md)
* [JSON](buildin-object-api/json.md)
* [Date](buildin-object-api/date.md)
* [Math](buildin-object-api/math.md)
* [RegExp](buildin-object-api/regexp.md)
* [Error](buildin-object-api/error.md)
* [Console](buildin-object-api/console.md)
* [全局](buildin-object-api/global.md)
* [关键词](keywords.md)
* [学习资料](learning.md)
\ No newline at end of file
## 内置对象和 API
uts 有一批内置对象。不管将 uts 编译为 js/kotlin/swfit,这些内置对象都可以跨平台使用。
## Array
Array 对象是用于构造数组的全局对象,数组是类似于列表的高阶对象。
### 实例属性
### length
数组中的元素个数
```ts
const clothing = ['shoes', 'shirts', 'socks', 'sweaters'];
console.log(clothing.length);
// expected output: 4
```
边界情况说明:
- 在不同平台上,数组的长度限制不同,超出限制会导致相应的错误或异常
* 编译至 JavaScript 平台时,最大长度为 2^32 - 1,超出限制会报错:`Invalid array length`
* 编译至 Kotlin 平台时,最大长度受系统内存的限制,超出限制报错:`java.lang.OutOfMemoryError: Failed to allocate a allocation until OOM`
* 编译至 Swift 平台时,最大长度也受系统内存的限制,目前超出限制没有返回信息。
### 实例方法
### concat
concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
```ts
const array1 = ['a', 'b', 'c'];
const array2 = ['d', 'e', 'f'];
const array3 = array1.concat(array2);
console.log(array3);
// expected output: Array ["a", "b", "c", "d", "e", "f"]
```
### copyWithin
copyWithin() 方法浅复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度。
```ts
const array1 = ['a', 'b', 'c', 'd', 'e'];
// copy to index 0 the element at index 3
console.log(array1.copyWithin(0, 3, 4));
// expected output: Array ["d", "b", "c", "d", "e"]
// copy to index 1 all elements from index 3 to the end
console.log(array1.copyWithin(1, 3));
// expected output: Array ["d", "d", "e", "d", "e"]
```
### every
every() 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。
```ts
const isBelowThreshold = (currentValue:number):boolean => currentValue < 40;
const array1 = [1, 30, 39, 29, 10, 13];
console.log(array1.every(isBelowThreshold));
// expected output: true
```
### fill
fill() 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。
```ts
const array1 = [1, 2, 3, 4];
// fill with 0 from position 2 until position 4
console.log(array1.fill(0, 2, 4));
// expected output: [1, 2, 0, 0]
// fill with 5 from position 1
console.log(array1.fill(5, 1));
// expected output: [1, 5, 5, 5]
console.log(array1.fill(6));
// expected output: [6, 6, 6, 6]
```
### filter
filter() 方法创建一个新数组,其包含通过所提供函数实现的测试的所有元素。
```ts
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter((word:string):boolean => word.length > 6);
console.log(result);
// expected output: Array ["exuberant", "destruction", "present"]
```
### find
find() 方法返回数组中满足提供的测试函数的第一个元素的值。
```ts
const array1 = [5, 12, 8, 130, 44];
const found = array1.find((element:number):boolean => element > 10);
console.log(found);
// expected output: 12
```
### findIndex
findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。若没有找到对应元素则返回-1。
```ts
const array1 = [5, 12, 8, 130, 44];
const isLargeNumber = (element:number):boolean => element > 13;
console.log(array1.findIndex(isLargeNumber));
// expected output: 3
```
### flat
flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
```ts
const arr1 = [0, 1, 2, [3, 4]];
console.log(arr1.flat());
// expected output: [0, 1, 2, 3, 4]
const arr2 = [0, 1, 2, [[[3, 4]]]];
console.log(arr2.flat(2));
// expected output: [0, 1, 2, [3, 4]]
```
### forEach
forEach() 方法对数组的每个元素执行一次给定的函数。
```ts
const array1 = ['a', 'b', 'c'];
array1.forEach(element => console.log(element));
// expected output: "a"
// expected output: "b"
// expected output: "c"
```
### includes
includes() 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回 false。
```ts
const array1 = [1, 2, 3];
console.log(array1.includes(2));
// expected output: true
const pets = ['cat', 'dog', 'bat'];
console.log(pets.includes('cat'));
// expected output: true
console.log(pets.includes('at'));
// expected output: false
```
### indexOf
indexOf() 方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
```ts
const beasts = ['ant', 'bison', 'camel', 'duck', 'bison'];
console.log(beasts.indexOf('bison'));
// expected output: 1
// start from index 2
console.log(beasts.indexOf('bison', 2));
// expected output: 4
console.log(beasts.indexOf('giraffe'));
// expected output: -1
```
### join
join() 方法将一个数组的所有元素连接成一个字符串并返回这个字符串。如果数组只有一个项目,那么将返回该项目而不使用分隔符。
```ts
const elements = ['Fire', 'Air', 'Water'];
console.log(elements.join());
// expected output: "Fire,Air,Water"
console.log(elements.join(''));
// expected output: "FireAirWater"
console.log(elements.join('-'));
// expected output: "Fire-Air-Water"
```
### lastIndexOf
lastIndexOf() 方法返回指定元素在数组中的最后一个的索引,如果不存在则返回 -1。从数组的后面向前查找,从 fromIndex 处开始。
```ts
const animals = ['Dodo', 'Tiger', 'Penguin', 'Dodo'];
console.log(animals.lastIndexOf('Dodo'));
// expected output: 3
console.log(animals.lastIndexOf('Tiger'));
// expected output: 1
```
### map
map() 方法创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。
```ts
const array1 = [1, 4, 9, 16];
// pass a function to map
const map1 = array1.map((x:number):number => x * 2);
console.log(map1);
// expected output: Array [2, 8, 18, 32]
```
### pop
pop() 方法从数组中删除最后一个元素,并返回该元素的值。此方法会更改数组的长度。
```ts
const plants = ['broccoli', 'cauliflower', 'cabbage', 'kale', 'tomato'];
console.log(plants.pop());
// expected output: "tomato"
console.log(plants);
// expected output: Array ["broccoli", "cauliflower", "cabbage", "kale"]
plants.pop();
console.log(plants);
// expected output: Array ["broccoli", "cauliflower", "cabbage"]
```
### push
push() 方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度。
```ts
const animals = ['pigs', 'goats', 'sheep'];
const count = animals.push('cows');
console.log(count);
// expected output: 4
console.log(animals);
// expected output: Array ["pigs", "goats", "sheep", "cows"]
animals.push('chickens', 'cats', 'dogs');
console.log(animals);
// expected output: Array ["pigs", "goats", "sheep", "cows", "chickens", "cats", "dogs"]
```
### reduce
reduce() 方法对数组中的每个元素按序执行一个由您提供的 reducer 函数,每一次运行 reducer 会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。
第一次执行回调函数时,不存在“上一次的计算结果”。如果需要回调函数从数组索引为 0 的元素开始执行,则需要传递初始值。否则,数组索引为 0 的元素将被作为初始值 initialValue,迭代器将从第二个元素开始执行(索引为 1 而不是 0)。
```ts
const array1 = [1, 2, 3, 4];
// 0 + 1 + 2 + 3 + 4
const initialValue = 0;
const sumWithInitial = array1.reduce(
(previousValue:number, currentValue:number):number => previousValue + currentValue,
initialValue
);
console.log(sumWithInitial);
// expected output: 10
```
### shift
shift() 方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。
```ts
const array1 = [1, 2, 3];
const firstElement = array1.shift();
console.log(array1);
// expected output: Array [2, 3]
console.log(firstElement);
// expected output: 1
```
### slice
slice() 方法返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变。
```ts
const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];
console.log(animals.slice(2));
// expected output: Array ["camel", "duck", "elephant"]
console.log(animals.slice(2, 4));
// expected output: Array ["camel", "duck"]
console.log(animals.slice(1, 5));
// expected output: Array ["bison", "camel", "duck", "elephant"]
console.log(animals.slice(-2));
// expected output: Array ["duck", "elephant"]
console.log(animals.slice(2, -1));
// expected output: Array ["camel", "duck"]
console.log(animals.slice());
// expected output: Array ["ant", "bison", "camel", "duck", "elephant"]
```
### some
some() 方法测试数组中是不是至少有 1 个元素通过了被提供的函数测试。它返回的是一个 Boolean 类型的值。
```ts
const array = [1, 2, 3, 4, 5];
// checks whether an element is even
const even = (element:number):boolean=> element % 2 == 0;
console.log(array.some(even));
// expected output: true
```
### sort
sort() 方法对数组的元素进行排序,并返回数组。
**平台差异说明**
|JavaScript|Kotlin|Swift|
|:-:|:-:|:-:|
|√|√|x|
```ts
const array2 = [5, 1, 4, 2, 3];
array2.sort((a: number, b: number):number => a - b);
// expect(array2).toEqual([1, 2, 3, 4, 5]);
```
### splice
splice() 方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。
```ts
const months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb');
// inserts at index 1
console.log(months);
// expected output: Array ["Jan", "Feb", "March", "April", "June"]
months.splice(4, 1, 'May');
// replaces 1 element at index 4
console.log(months);
// expected output: Array ["Jan", "Feb", "March", "April", "May"]
```
### unshift
unshift() 方法将一个或多个元素添加到数组的开头,并返回该数组的新长度(该方法修改原有数组)。
```ts
const array1 = [1, 2, 3];
console.log(array1.unshift(4, 5));
// expected output: 5
console.log(array1);
// expected output: Array [4, 5, 1, 2, 3]
```
### 常见操作
- 创建数组
```ts
const fruits = ['Apple', 'Banana']
console.log(fruits.length)
```
- 通过索引访问数组元素
```ts
const first = fruits[0]
// Apple
const last = fruits[fruits.length - 1]
// Banana
```
- 遍历数组
```ts
fruits.forEach(function(item, index, array) {
console.log(item, index)
})
// Apple 0
// Banana 1
```
- 添加元素到数组的末尾
```ts
const newLength = fruits.push('Orange')
// ["Apple", "Banana", "Orange"]
```
- 删除数组末尾的元素
```ts
const last = fruits.pop() // remove Orange (from the end)
// ["Apple", "Banana"]
```
- 删除数组头部元素
```ts
const first = fruits.shift() // remove Apple from the front
// ["Banana"]
```
- 添加元素到数组的头部
```ts
const newLength = fruits.unshift('Strawberry') // add to the front
// ["Strawberry", "Banana"]
```
- 找出某个元素在数组中的索引
```ts
fruits.push('Mango')
// ["Strawberry", "Banana", "Mango"]
const pos = fruits.indexOf('Banana')
// 1
```
- 通过索引删除某个元素
```ts
const removedItem = fruits.splice(pos, 1) // this is how to remove an item
// ["Strawberry", "Mango"]
```
- 从一个索引位置删除多个元素
```ts
const vegetables = ['Cabbage', 'Turnip', 'Radish', 'Carrot']
console.log(vegetables)
// ["Cabbage", "Turnip", "Radish", "Carrot"]
const pos = 1
const n = 2
const removedItems = vegetables.splice(pos, n)
// this is how to remove items, n defines the number of items to be removed,
// starting at the index position specified by pos and progressing toward the end of array.
console.log(vegetables)
// ["Cabbage", "Carrot"] (the original array is changed)
console.log(removedItems)
// ["Turnip", "Radish"]
```
- 复制一个数组
```ts
const shallowCopy = fruits.slice() // this is how to make a copy
// ["Strawberry", "Mango"]
```
### 访问数组元素
数组的索引是从 0 开始的,第一个元素的索引为 0,最后一个元素的索引等于该数组的 长度 减 1。
如果指定的索引是一个无效值,将会抛出 IndexOutOfBoundsException 异常
下面的写法是错误的,运行时会抛出 SyntaxError 异常,而原因则是使用了非法的属性名:
```ts
console.log(arr.0) // a syntax error
```
## console
### debug
在控制台打印 debug 日志
```ts
console.debug(msg1, msg2, msg3)
```
### error
在控制台打印 error 日志
```ts
console.error(msg1, msg2, msg3)
```
### info
在控制台打印 info 日志
```ts
console.info(msg1, msg2, msg3)
```
### log
在控制台打印 log 日志
```ts
console.log(msg1, msg2, msg3)
```
### warn
在控制台打印 warn 日志
```ts
console.warn(msg1, msg2, msg3)
```
## Date
创建一个 Date 实例,该实例呈现时间中的某个时刻。Date 对象则基于 Unix Time Stamp,即自 1970 年 1 月 1 日(UTC)起经过的毫秒数。
### 语法
```ts
new Date();
new Date(value);
new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);
```
- 如果没有输入任何参数,则 Date 的构造器会依据系统设置的当前时间来创建一个 Date 对象。
- 如果提供了至少两个参数,其余的参数均会默认设置为 1(如果没有指定 day 参数)或者 0(如果没有指定 day 以外的参数)。
- uts 的时间由世界标准时间(UTC)1970 年 1 月 1 日开始,用毫秒计时,一天由 86,400,000 毫秒组成。Date 对象的范围是 -100,000,000 天至 100,000,000 天(等效的毫秒值)。
-
### 静态方法
### now
表示自 UNIX 纪元开始(1970 年 1 月 1 日 00:00:00 (UTC))到当前时间的毫秒数。
**平台差异说明**
|JavaScript|Kotlin|Swift|
|:-:|:-:|:-:|
|√|√|√ `(3.6.11+)`|
```ts
// this example takes 2 seconds to run
const start = Date.now()
console.log('starting timer...')
// expected output: starting timer...
setTimeout(() => {
const millis = Date.now() - start
console.log(`seconds elapsed = ${Math.floor(millis / 1000)}`)
// expected output: seconds elapsed = 2
}, 2000)
```
### 实例方法
### getDate
根据本地时间,返回一个指定的日期对象为一个月中的哪一日(从 1--31)。
**平台差异说明**
|JavaScript|Kotlin|Swift|
|:-:|:-:|:-:|
|√|√|√ `(3.6.11+)`|
### getDay
根据本地时间,返回一个具体日期中一周的第几天,0 表示星期天。对于某个月中的第几天
**平台差异说明**
|JavaScript|Kotlin|Swift|
|:-:|:-:|:-:|
|√|√|√ `(3.6.11+)`|
### getFullYear
根据本地时间返回指定日期的年份。
### getHours
根据本地时间,返回一个指定的日期对象的小时。
**平台差异说明**
|JavaScript|Kotlin|Swift|
|:-:|:-:|:-:|
|√|√|√ `(3.6.11+)`|
### getMilliseconds
根据本地时间,返回一个指定的日期对象的毫秒数。
**平台差异说明**
|JavaScript|Kotlin|Swift|
|:-:|:-:|:-:|
|√|√|√ `(3.6.11+)`|
### getMinutes
根据本地时间,返回一个指定的日期对象的分钟数。
**平台差异说明**
|JavaScript|Kotlin|Swift|
|:-:|:-:|:-:|
|√|√|√ `(3.6.11+)`|
### getMonth
指定的日期对象的月份,为基于 0 的值(0 表示一年中的第一月)。
**平台差异说明**
|JavaScript|Kotlin|Swift|
|:-:|:-:|:-:|
|√|√|√ `(3.6.11+)`|
### getSeconds
根据本地时间,返回一个指定的日期对象的秒数。
**平台差异说明**
|JavaScript|Kotlin|Swift|
|:-:|:-:|:-:|
|√|√|√ `(3.6.11+)`|
### getTime
返回一个时间的格林威治时间数值。
**平台差异说明**
|JavaScript|Kotlin|Swift|
|:-:|:-:|:-:|
|√|√|√ `(3.6.11+)`|
### setDate
根据本地时间来指定一个日期对象的天数。
**平台差异说明**
|JavaScript|Kotlin|Swift|
|:-:|:-:|:-:|
|√|√|√ `(3.6.11+)`|
### setFullYear
根据本地时间为一个日期对象设置年份。
**平台差异说明**
|JavaScript|Kotlin|Swift|
|:-:|:-:|:-:|
|√|√|√ `(3.6.11+)`|
### setHours
根据本地时间为一个日期对象设置小时数,返回从 1970-01-01 00:00:00 UTC 到更新后的 日期 对象实例所表示时间的毫秒数。
### setMilliseconds
根据本地时间设置一个日期对象的豪秒数。
### setMinutes
根据本地时间为一个日期对象设置分钟数。
### setMonth
根据本地时间为一个日期对象设置月份。
### setSeconds
根据本地时间设置一个日期对象的秒数。
### setTime
以一个表示从 1970-1-1 00:00:00 UTC 计时的毫秒数为来为 Date 对象设置时间。
**平台差异说明**
|JavaScript|Kotlin|Swift|
|:-:|:-:|:-:|
|√|√|√ `(3.6.11+)`|
## Error
当运行时错误产生时,Error 对象会被抛出。Error 对象也可用于用户自定义的异常的基础对象。
### 实例属性
### message
错误消息。对于用户创建的 Error 对象,这是构造函数的第一个参数提供的字符串。
### 示例
```ts
try {
throw new Error('Whoops!')
} catch (e) {
console.error(e.message)
}
```
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册