ts实战系列四:复合类型

2. any类型和联合类型:

any表示这个值可以是任何值,意味着不做任何类型检查,尽量避免使用any.

let a: any = 4
let a: number | string = `12`

let looselyTyped: any = 4;
// 由于声明为any,无法在静态检查阶段发现这个错误,looselyTyped的值是4,没有ifItExists方法.
looselyTyped.ifItExists();

3. void:

一般用在表示函数不返回任何值或者返回undefined,因为函数不返回任何值的时候 === 返回undefined.

export const useMount = (fn: () => void) => {
  useEffect(() => {
    fn();
  }, []);
};

3. Array:

在TS中,array一般指所有元素类型相同的值的集合.

. let a: number[] = [1, 2, 3, 4]. let list: Array<number> = [1, 2, 3];. interface User {
        name: string
    }
    const john = {name: 'john'}
    const jack = {name: 'jack'}
    let personList = [john, jack] // 这里 john 和 jack 都是 User 类型的

(1). arguments是类数组对象,有length、下标[0],但是没有方法.

function test() {
  console.log(arguments)
  let arr: any[] = arguments;    // 报错
}

:. 类数组对象和数组都是对象生的,区别在于数组比类数组对象多了很多方法.. ts帮它们都定义的接口,:
    IArguments、类似还有HtmlCollection、NodeList.

4. 元组Tuple:

. 特点:
    a. 混合类型的"数组"
    b. tuple是"数量固定,类型可以各异"版的数组

②. let user: [strinng, number] = ['david', 12];. const [users, setUsers] = useState([]). custom hook的优雅:
    const useHappy = () => {
        // ....
        // obj返回:
        // return {isHappy, makeHappy, makeUnHappy}
        return [isHappy, makeHappy, makeUnHappy]
    }
    const SomeComponent = () => {
        // 如何接收obj返回:
        // const {isHappy: tomIsHappy, makeHappy: makeTomHappy, makeUnHappy: makeTomUnHappy} = useHappy(false)
        const [tomIsHappy, makeTomHappy, makeTomUnHappy] = useHappy(false)
        // ...
    }
    a. 在React中,可能使用tuple作为custom hook的返回值,直接使用结构赋值.
    b. 如果用obj返回也能达到效果,但是需要将isHappy重命名为tomIsHappy.
    c. 使用tuple的好处,便于使用者重命名.
  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值