V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
webberone
V2EX  ›  Vue.js

vue3 Composition api 变量类型推断问题

  •  
  •   webberone · 2020-11-19 14:09:18 +08:00 · 2226 次点击
    这是一个创建于 1498 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用 vue3 + ts 开发过程中,用 const root = ref(null)创建一个模板引用,编译器会提示创建出来的 root 类型是 Ref(null),但是有的项目提示类型是 Ref(any),这是什么原因呀
    2 条回复    2020-11-19 15:42:17 +08:00
    9ki
        1
    9ki  
       2020-11-19 14:46:22 +08:00
    ```typescript
    export declare function ref<T extends object>(value: T): T extends Ref ? T : Ref<UnwrapRef<T>>;

    export declare function ref<T>(value: T): Ref<UnwrapRef<T>>;

    export declare function ref<T = any>(): Ref<T | undefined>;
    ```
    上面是 vue3 ref 的类型声明
    如果你在 `tsconfig.json` 开启了 `strictNullChecks ` 则 ts 会区分 null 和 undefined,否则则不区分,而是当成 any 处理
    所以:如果你没有开启,那么传了 null 则会匹配到
    ``` export declare function ref<T extends object>(value: T): T extends Ref ? T : Ref<UnwrapRef<T>>; ```

    所以最终为 any
    webberone
        2
    webberone  
    OP
       2020-11-19 15:42:17 +08:00
    @9ki 了解了,灰常感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1103 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 23:01 · PVG 07:01 · LAX 15:01 · JFK 18:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.