ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

typescript 里面的 as const

2022-02-28 12:32:06  阅读:172  来源: 互联网

标签:typescript 里面 get GET https 类型 const type


尝试 as 断言

// 定义一个类型
type a = 'get'
// 定义一个函数, 参数类型为 'get'
function f(a: a) {
  console.log(a)
}
f('a') // 可以执行
const obj = {
  a: 'get'
}
f(obj.a) //  类型“string”的参数不能赋给类型“"get"”的参数。 这里的 obj 属性的值类型为 string 不符合期望类型 'get'

通常情况下, 一个对象的属性值都是基本类型和引用类型数据, 不太可能会出现 ‘get’, ‘post’, 这些个自己定义的字符串文字类型;这个时候可以使用断言了
f(obj.a as 'get') 把 obj.a 的属性值 定义为 get 类型, as 在这里把 string 类型 转换为了 get 类型

as const

You can use as const to convert the entire object to be type literals:

const req = { url: 'https://example.com', method: 'GET' } as const
相当于把这个对象转换为
type reqTranlate = { url: 'https://example.com' method: 'GET' }

但是 reqTranlate 在 ts 里面是无法访问其属性值的, 因为它是类型, 不是一个值, 而 const 就是把对象转换为一个可以访问其属性值的type
或者这种方式更方便理解一些, 它的值和类型是一样的

{key:value:type}
{ url: 'https://example.com':'https://example.com', method: 'GET' : 'GET'}

// 在这里如果不使用 as const 断言, 下面会提示类型错误 
const req = { url: 'https://example.com', method: 'GET' } as const

type reqTranlate = {
  url: 'https://example.com'
  method: 'GET'
}

function f4(params: reqTranlate): void {}

f4(req)

参考文档 ts文档

标签:typescript,里面,get,GET,https,类型,const,type
来源: https://blog.csdn.net/weixin_43191327/article/details/123179554

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有