首页 > 其他分享 >[Typescript] Partial autocompletion (string & {})

[Typescript] Partial autocompletion (string & {})

时间:2023-08-04 19:55:24浏览次数:52  
标签:Typescript Partial string LooseSize type autocompletion Size

const presetSizes = {
  xs: "0.5rem",
  sm: "1rem",
};

type Size = keyof typeof presetSizes;
//type LooseSize = Size | string; // the result will be string
type LooseSize = Size | (string & {}); // working

export const Icon = (props: { size: LooseSize }) => {
  return (
    <div
      style={{
        width:
          props.size in presetSizes
            ? presetSizes[
                /**
                 * The 'as' is necessary here because TS can't seem to narrow
                 * props.size to Size properly
                 */
                props.size as Size
              ]
            : props.size,
      }}
    />
  );
};

<>
  <Icon size="sm"></Icon>
  <Icon size="xs"></Icon>
  <Icon size="10px"></Icon>
</>;

 

标签:Typescript,Partial,string,LooseSize,type,autocompletion,Size
From: https://www.cnblogs.com/Answer1215/p/17606861.html

相关文章

  • Typescript使用基础篇
    前言对于typescript而言如果想要能在项目中熟练的应用,个人认为需要详细去了解以下几点内容:类型(基本类型,联合类型,类型断言,泛型),模块和命名空间,接口和类基础篇开发环境编译包全局安装npminstall-gtypescript编译ts文件命令tsc+ts文件监听文件变化并编译tsc-w+ts文件基础类型ty......
  • typescript 快速入门
    1.环境搭建1.1安装安装typescriptyarnaddtypescript-g安装ts-nodets-node是一个在内存中运行的TypeScript运行时,它可以直接运行ts文件,而不需要将ts文件编译成js文件yarnaddts-node-g安装@types/node@types/node是node.js的类型定义文件,......
  • TypeScript 之 Record
    在TS中,类似数组、字符串、数组、接口这些常见的类型都非常常见,但是如果要定义一个对象的key和value类型该怎么做呢?这时候就需要用到TS的Record了。来自TypeScript之Record-简书(jianshu.com)【TypeScript】TypeScript之Record的用法-掘金(juejin.cn)比如我需......
  • [React] forwardRef typescript
    importReact,{forwardRef}from"react";//DeclareatypethatworkswithgenericcomponentstypeFixedForwardRef=<T,P={}>(render:(props:P,ref:React.Ref<T>)=>React.ReactElement)=>(props:P&React.RefAttri......
  • Vue3中使用TypeScript封装axios遇到的问题(AxiosRequestConfig)
    如果您有更好的解决方法,欢迎评论区评论。版本"dependencies":{"axios":"^1.0.0","vant":"^4.6.3","vue":"^3.3.4","vue-router":"^4.2.4","vuex":&quo......
  • JavaScript、ECMA、CommonJs、NodeJS、TypeScript的关系
    返回JavaScript发布时间:1995发布公司:Netscape(网景)它是一种高级的解释型编程语言,简称JS它最初的设计目标是改善网页的用户体验。......
  • TypeScript 泛型接口的一个具体使用例子
    有下面这段代码:以上代码是一个TypeScript定义的接口(interface),用于表示一个通用的实体状态(EntityState)。让我们逐行解释这段代码的含义,并了解其中使用了哪些TypeScript的语法特性:exportinterfaceEntityState<T>{这行代码定义了一个导出的接口EntityState<T>,其中<T>......
  • 关于 TypeScript 中的联合类型
    在TypeScript中,|符号被用于定义联合类型(UnionTypes)。联合类型是一种高级的类型定义方式,它允许你定义一个类型为多种类型中的一种。这对于处理可能有多种类型的变量非常有用。例如,假设我们有一个函数,它接受一个参数,这个参数可能是一个数字,也可能是一个字符串。在JavaScript......
  • TypeScript 对象解构操作符在 Spartacus 实际项目开发中的应用
    下面这段代码来自Spartacus项目的navigation-entry-item.reducer.ts实现。import{NodeItem}from'../../model/node-item.model';import{CmsActions}from'../actions/index';exportconstinitialState:NodeItem|undefined=undefined;exportfu......
  • typescript
    原始数据类型包括:布尔值、数值、字符串以及ES6中的新类型Symbol和ES10中的新类型BigInt数组泛型letlist:Array<number>=[1,2,3]; 任意类型letlist:any[]=['itbaizhan',10,{website:'https://xxx.com'}]; 元组letinfo:[string,number]=['g......