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

typescript类型体操记录贴(三)Readonly

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

    [LV.7]常住居民III

    712

    主题

    5960

    回帖

    6759

    积分

    管理员

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

    积分
    6759

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

    发表于 2022-7-18 00:31:40 | 显示全部楼层 | 阅读模式

    地址
    https://github.com/type-challenges/type-challenges/blob/main/questions/00007-easy-readonly/README.md

    Readonly

    Implement the built-in Readonly<T> generic without using it.
    
    Constructs a type with all properties of T set to readonly, meaning the properties of the constructed type cannot be reassigned.
    
    For example:

    实现内置Readonly泛型而不使用他
    构建一个类型将T的所有属性设置成只读,意味着所有属性之恩给你构建类型不能去重新设置
    例如

    interface Todo {
      title: string
      description: string
    }
    
    const todo: MyReadonly<Todo> = {
      title: "Hey",
      description: "foobar"
    }
    
    todo.title = "Hello" // Error: cannot reassign a readonly property
    todo.description = "barFoo" // Error: cannot reassign a readonly property

    这题跟二差不多
    基本白给题
    直接K in keyof T
    遍历T的所有属性,然后加一个readonly即可
    上代码

    type MyReadonly<T> = {
      readonly [K in keyof T]:T[K]
    }

    搞定
    图片.png

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

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

    发表回复

    本版积分规则

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