返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Typescripttipefreshness更严格对象字面量检查
  • 693
分享到

Typescripttipefreshness更严格对象字面量检查

Typescript对象字面量检查Typescripttipefreshness 2022-11-13 18:11:07 693人浏览 安东尼
摘要

目录引言严格检查存在缺点具体规则而言引言 typescript 是结构化的类型系统,那么对于对象来说,如果 A 具有 B 的所有属性,并且属性对应的类型相匹配,那么 A 就能赋值给

引言

typescript 是结构化的类型系统,那么对于对象来说,如果 A 具有 B 的所有属性,并且属性对应的类型相匹配,那么 A 就能赋值给 B

type A = {
    name:string;
    age:number;
}
type B = {
    name:string
}
declare let a:A
declare let b: B
b = a

但是其中有一个例外的情况,会强制 a、b 具有完全相同的结构,被称为 freshness,也被称为更严格的对象字面量检查

let b: {
    name:string
}
b ={name:'1',age:1}

function freshness({name}:{name:string}){
    return 1
}
freshness({name:'du',age:1}); 

play

严格检查存在缺点

之所以有这样的严格检查是因为存在以下两个缺点:

1.结构化类型系统非常方便,但是它可能让你误以为某些函数接收的比他实际需要的多

function logName(something: { name: string }) {
  console.log(something.name);
}
logName({ name: 'matt', job: 'being awesome' })

2.在实现此功能之前 Typescript 并不能很好的检测出对象中的错误,特别是指定可选类型时

interface TextOptions {
    alignment?: string;
    color?: string;
    padding?: number;
}
function drawText(opts: TextOptions) { ... }
// None of these were errors before
drawText({ align: 'center' }); // Oops
drawText({ colour: 'grey' }); // Oops
drawText({ pading: 32}); // Oops

如上例子可能只是拼错了而已,但是在此之前 Typescript 并不能检测出来

具体规则而言

  • 每个对象字面量都被认为是新鲜的
  • 当一个新的字面量对象被分配给一个变量或者传递给一个非空的目标类型参数时,如果对象指定了目标类型中不存在的属性,那就是一个错误
  • 在一个类型断言中,或者当一个对象字面的类型被扩大时,新鲜感就会消失
var x: { foo: number };
x = { foo: 1, baz: 2 };  // Error, excess property `baz`
var y: { foo: number, bar?: number };
y = { foo: 1, baz: 2 };  // Error, excess or misspelled property `baz`

当新鲜类型被捕获到变量中时,不会发生错误

var x: { foo: number };
x1 = { foo: 1, baz: 2 };
x = x1;
var y: { foo: number, bar?: number };
y1 = { foo: 1, baz: 2 };
y = y1;

参考: jkchao.GitHub.io/typescript-…

github.com/microsoft/T…

以上就是Typescript tipe freshness 更严格对象字面量检查的详细内容,更多关于Typescript tipe freshness对象字面量检查的资料请关注编程网其它相关文章!

--结束END--

本文标题: Typescripttipefreshness更严格对象字面量检查

本文链接: https://lsjlt.com/news/170065.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Typescripttipefreshness更严格对象字面量检查
    目录引言严格检查存在缺点具体规则而言引言 Typescript 是结构化的类型系统,那么对于对象来说,如果 A 具有 B 的所有属性,并且属性对应的类型相匹配,那么 A 就能赋值给 ...
    99+
    2022-11-13
    Typescript 对象字面量检查 Typescript tipe freshness
  • 详解TS数字分隔符和更严格的类属性检查
    目录概述in操作符细化和精确的 instanceof更智能的对象字面量推断unique symbol 类型和常量名属性更严格的类属性检查解决方案1:允许定义解决方案2:显式属性初始化...
    99+
    2024-04-02
  • PHP8如何通过Union Types提供更严格的类型检查?
    PHP8如何通过Union Types提供更严格的类型检查?摘要:PHP8引入了一种新的语法特性-Union Types,它使得开发者可以更加准确地定义函数和方法的参数和返回值类型。本文将详细介绍Union T...
    99+
    2023-10-22
    PHP 类型检查 Union types
  • 详解JS中的对象字面量
    目录前言1. 在对象构造上设置原型1.1 __proto__用法的特殊情况2.简写方法定义3. super 的使用3.1 super 使用限制4.计算属性名4.1 symbol 作为...
    99+
    2024-04-02
  • JavaScript中的对象字面量有什么
    这篇“JavaScript中的对象字面量有什么”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“JavaScript中的对象字面量有什么”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢...
    99+
    2023-06-06
  • JS中如何利用字面量创建对象
    本篇内容介绍了“JS中如何利用字面量创建对象”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是字面量字面...
    99+
    2024-04-02
  • ES6中怎么使用字面量创建对象
    本篇内容介绍了“ES6中怎么使用字面量创建对象”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!字面量语法扩展在 ES6 模式下使用字面量创建对...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作