上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖
楼主: 李恒道 - 

关于typeof class得到构造函数问题本质

[复制链接]
  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6760

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2022-8-7 03:27:40 | 显示全部楼层 | 阅读模式

    在我学习静态侧的时候翻译文章
    https://bbs.tampermonkey.net.cn/forum.php?mod=viewthread&tid=2665&highlight=%E5%AE%9E%E4%BE%8B%E4%BE%A7
    有一段话

    Foo类具有一个静态侧和一个实例侧
    静态方面Foo是与构造函数有关的东西
    包括
    构造函数本身,类型为{new(constructorArgument: string): Foo}
    属性staticProp,类型为string
    方法staticMethod,类型为{(): void}
    这种类型称之为typeof Foo

    刚才突然明白了这句话意义
    typeof核心是根据一个js代码推断出来实际的类型层面
    而我们声明class的时候实际有两个东西
    1.类型层面的class,也就是实例类型
    2.一个class的构造函数,属于运行层面
    我们在let a:类名=new aaa()
    使用的是类型层面
    而使用let a:typeof 类名=aaa
    这里的类名实际上是一个运行层面
    通过typeof 函数推导出来构造函数类型
    可以参考代码

    function abc(name: string): number {
      return 6;
    }
    type abc = string;
    let ins_a: abc = "888";
    let type_a: typeof abc = function (a: string) {
      return 6;
    };

    同样叫abc
    一个是类型层面,一个是运行层面
    而我们可以通过typeof将运行层面变为类型层面作为类型来赋值
    这就是typeof 类名可以得到类的构造函数的本质

    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表