首页 > 其他分享 >[Typescript] Approaches for Typing Object Parameters

[Typescript] Approaches for Typing Object Parameters

时间:2023-01-11 15:33:06浏览次数:41  
标签:Typescript const Object second returnBothOfWhatIPassIn Approaches params return 

Consider this implementation of returnBothOfWhatIPassIn:

const returnBothOfWhatIPassIn = (params: { a: unknown; b: unknown }) => {
  return {
    first: params.a,
    second: params.b,
  };
};

This time the function takes in a params object that includes a and b.

 

import { expect, it } from 'vitest';
import { Equal, Expect } from '../helpers/type-utils';

const returnBothOfWhatIPassIn = <T1, T2>(params: { a: T1; b: T2 }) => {
  return {
    first: params.a,
    second: params.b,
  };
};

it('Should return an object where a -> first and b -> second', () => {
  const result = returnBothOfWhatIPassIn({
    a: 'a',
    b: 1,
  });

  expect(result).toEqual({
    first: 'a',
    second: 1,
  });

  type test1 = Expect<
    Equal<
      typeof result,
      {
        first: string;
        second: number;
      }
    >
  >;
});

 

So the solution 1, we use:

const returnBothOfWhatIPassIn = <T1, T2>(params: { a: T1; b: T2 }) => {
  return {
    first: params.a,
    second: params.b,
  };
};

 

Solution 2:

interface Params<T1, T2> {
  a: T1;
  b: T2;
}

const returnBothOfWhatIPassIn = <T1, T2>(params: Params<T1, T2>) => {
  return {
    first: params.a,
    second: params.b,
  };
};

 

标签:Typescript,const,Object,second,returnBothOfWhatIPassIn,Approaches,params,return,
From: https://www.cnblogs.com/Answer1215/p/17043906.html

相关文章

  • TypeScript 2.0 与 AngularJS 2.0 的最新动态
    Lightbot微软终于发布了TypeScript2.0的第一个RC版本。TypeScript是一个简化版的JavaScript语言,被大量用于各种Web项目,包括下面提到的著名的AngularJS框架......
  • javaScript Object.is和==和===
    ##相等运算符(==)==相等运算符在判断相等前对两边的变量(如果它们不是同一类型)进行强制转换1.如果操作数具有相同的类型,则按如下方式进行比较:-对象:`true`仅......
  • js filter object keys All In One
    jsfilterobjectkeysAllInOneQ:这段js代码如何优化//this.form={status:"1",...}//this.searchData={status:"2",interviewStatus:"1",isChoooseAl......
  • ArcObject必须使用反射创建实例对象
    在ArcObject开发时,有时非常让人无语的是使用new创建对象时,报"无法将类型为Systerm._ComObject的对象强制转换为类型******",官方知道这是个坑,早就讲得非常清楚和透彻了。In......
  • ArcObjects SDK开发 一些可直接调用的对话框
    在ArcMap中,一些对话框是很复杂的,例如设置点线面样式的对话框,选择空间参考的对话框等,但这些对话框有些在ArcObjectsSDK中是可以直接调用的。1、空间参考选择设置对话框弹......
  • GObject Note
    初创建于:2022-09-1122:34GObject概述GObject可以理解为一个库,使用这个库可以用C语言编写面向对象的程序.这里通过一个例子直观地来理解一下GObject.定义类......
  • org.hibernate.PersistentObjectException: detached entity passed to persist异常
    简单地来看,将一个游离的对象要被持久化(save)时报错。我们知道要持久化对象时候,通常Hibernate会根据ID生成策略自动生成ID值,但是这个对象ID已经有值,所有抛错。这个错误是......
  • AttributeError: 'NoneType' object has no attribute 'append'
    在写python脚本时遇到AttributeError:'NoneType'objecthasnoattribute'append'a=[]b=[1,2,3,4]a=a.append(b)执行一次后发现a的类型变为了NoneType。下次执......
  • TypeScript支持的数据类型(一)
    说明TypeScript做为JavaScript的超集,对于JavaScript中的类型完全支持,除了JavaScript中的类型之外,TS自身也提供了一些数据类型。在TS中,数据类型的整体结构如下:最顶级......
  • 日常开发记录-Object函数的内置方法Object.entries
     constdata={id:1,name:"张三",age:22}letparams=""/*Object.entries()方法返回一个数组,数组的每一个元素是对象的自有的可枚举属性的键......