提交 fb375afc 编写于 作者: lizhongyi_'s avatar lizhongyi_

update operator.md

上级 b1fb947a
......@@ -344,9 +344,19 @@ a as string // 异常
使用 `instanceof` 运算符执行运行时检查,以标识对象是否符合给定类型。
| 类型 | 结果 |
| ------------------------------------------------------------------------------------ | ---------------- |
| Boolean | 编译报错,不支持 |
| Number | 编译报错,不支持 |
| String | 编译报错,不支持 |
| 平台专有数字类型: Int, Float, Double, Long ... | true or false |
| typeof 结果为 "object" 的类型(包含但不限于:Date, Array, Map, UTSJSONObject, 自定义类型) | true or false |
对于 Boolean, Number, String 类型的实例判断,请使用 `typeof` .
```ts
function fn(obj: any) {
if (obj instanceof String) {
if (obj instanceof Date) {
// ...
}
}
......@@ -365,8 +375,8 @@ function fn(obj: any) {
已经可以明确判断类型兼容性时无需使用 `instanceof` 在运行时进行判断,编译阶段会检查出这种情况会报错或者警告:
```ts
function fn(obj: string) {
if (obj instanceof String) {
function fn(obj: Date) {
if (obj instanceof Date) {
// ...
}
}
......@@ -376,17 +386,11 @@ function fn(obj: string) {
```ts
let a = 10.0
let b: Double = 3.14
let c: any = a
let d: any = b
let e: Int = 2
let a: Double = 3.14
let b: Int = 2
a instanceof number // true
b instanceof Double //true
c instanceof number //true //kottlin 结果为 false
d instanceof Double // true
e instanceof Int //true
a instanceof Double //true
b instanceof Int //true
```
......@@ -394,31 +398,31 @@ e instanceof Int //true
## 实例类型获取
使用 `typeof` 运算符获取操作数的类型,返回一个表示类型的字符串, 默认值是 "object"。
使用 `typeof` 运算符获取操作数的类型,返回一个表示类型的字符串。
| 类型 | 结果 |
| ------------------------------------------------------ | ---------------- |
| null | "object" |
| boolean | "boolean" |
| number | "number" |
| string | "string" |
| function | "function" |
| 平台专有数字类型: Int, Float, Double, Long ... | "Int","Float","Double","Long" ... |
| 其他任何对象(包含但不限于:Date, Array, Map, UTSJSONObject) | "object" |
对于数字类型,除了 number 之外,typeof 还能返回 Int Float Double Int64 Long ... 等所有平台特有数字类型。
基本用法
用法示例
```ts
// number
let a = 10.0
let b: Double = 3.14
let c: any = a
let d: any = b
let e: Int = 2
let c: Int = 2
typeof a == "number" //true
typeof b == "Double" //true
typeof d == "Double" //true
typeof e == "Int" //true
// 在 Swift 中
typeof c == "number" //true
// 但是在 Kottlin 中, typeof c 结果是 Double
typeof c == "Double"
typeof c == "Int" //true
// string
let str = "hello uts"
......@@ -446,9 +450,30 @@ let obj = {
typeof obj == "object" // true
// 除了上述类型外,typeof 默认返回的是 "object"
typeof null == "object" //true
typeof [1, 2, 3] == "object" //true
```
\ No newline at end of file
```
使用 typeof 获取 any 实例的类型时,在安卓平台上存在一些特殊情况:
```ts
// number
let a = 10.0
let b: Double = 3.14
let c: any = a
let d: any = b
typeof a == "number" //true
typeof b == "Double" //true
typeof d == "Double" //true
// 在 iOS 平台上
typeof c == "number" //true
// 在安卓平台上期望返回 "number" 但真实返回的是 "Double"
typeof c == "number" //false 真实返回的是 "Double"
```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册