csjiabin's blog csjiabin's blog
首页
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
  • 学习笔记

    • 《面向Node.js开发者的Go》
更多
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

csjiabin

前端界的小菜鸟
首页
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
  • 学习笔记

    • 《面向Node.js开发者的Go》
更多
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • comments
  • printing
  • logging
  • variables
  • interpolation
  • types
  • type check
    • if/else
    • for
    • while
    • switch
    • arrays
    • uint8 arrays
    • array iteration
    • array sorting
    • buffers
    • maps
    • objects
    • functions
    • default values
    • destructuring
    • spread operator
    • rest operator
    • swapping
    • classes
    • generators
    • datetime
    • timeout
    • interval
    • IIFE
    • files
    • json
    • big numbers
    • promises
    • async await
    • streams
    • event emitter
    • errors
    • try/catch
    • exceptions
    • regex
    • exec
    • tcp server
    • udp server
    • http server
    • url parse
    • gzip
    • dns
    • crypto
    • env vars
    • cli args
    • cli flags
    • stdout
    • stderr
    • stdin
    • modules
    • stack trace
    • databases
    • testing
    • benchmarking
    • documentation
    • 《面向Nodejs开发者的Go》
    miguelmota
    2022-09-29
    目录

    type check

    # Node.js

    function typeOf(obj) {
      return {}.toString.call(obj).split(" ")[1].slice(0, -1).toLowerCase();
    }
    
    const values = [
      true,
      10,
      "foo",
      Symbol("bar"),
      null,
      undefined,
      NaN,
      {},
      [],
      function () {},
      new Error(),
      new Date(),
      /a/,
      new Map(),
      new Set(),
      Promise.resolve(),
      function* () {},
      class {},
    ];
    
    for (value of values) {
      console.log(typeOf(value));
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28

    Output

    boolean
    number
    string
    symbol
    null
    undefined
    number
    object
    array
    function
    error
    date
    regexp
    map
    set
    promise
    generatorfunction
    function
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18

    # Go

    package main
    
    import (
    	"fmt"
    	"reflect"
    	"regexp"
    	"time"
    )
    
    func main() {
    	values := []interface{}{
    		true,
    		int8(10),
    		int16(10),
    		int32(10),
    		int64(10),
    		uint(10),
    		uint8(10),
    		uint16(10),
    		uint32(10),
    		uint64(10),
    		uintptr(10),
    		float32(10.5),
    		float64(10.5),
    		complex64(-1 + 10i),
    		complex128(-1 + 10i),
    		"foo",
    		byte(10),
    		'a',
    		rune('a'),
    		struct{}{},
    		[]string{},
    		map[string]int{},
    		func() {},
    		make(chan bool),
    		nil,
    		new(int),
    		time.Now(),
    		regexp.MustCompile(`^a$`),
    	}
    
    	for _, value := range values {
    		fmt.Println(reflect.TypeOf(value))
    	}
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45

    Output

    bool
    int8
    int16
    int32
    int64
    uint
    uint8
    uint16
    uint32
    uint64
    uintptr
    float32
    float64
    complex64
    complex128
    string
    uint8
    int32
    int32
    struct {}
    []string
    map[string]int
    func()
    chan bool
    <nil>
    *int
    time.Time
    *regexp.Regexp
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    编辑 (opens new window)
    #Go#Node.js
    上次更新: 2022/09/30, 11:34:22
    types
    if/else

    ← types if/else→

    最近更新
    01
    咖啡知识
    10-13
    02
    documentation
    09-29
    03
    benchmarking
    09-29
    更多文章>
    Theme by Vdoing | Copyright © 2018-2022 csjiabin | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式