定义泛型的两种方式

7 篇文章 0 订阅

泛型接口 第一种

interface ConfigFn {
    <T>(value: T): T;
}
var getData: ConfigFn = function <T>(value: T): T {
   return value;
 }
 getData<string>('张三')

泛型接口 第二种

interface ConfigFn<T> {
    (value: T): T;
}
function getData<T>(value: T): T {
    return value;
}
var myGetData: ConfigFn<string> = getData
myGetData('20')


interface dataobj {
  //定义为接口类型,更加详细的定义对象里的每个属性值类型
  leftValue: any[];
  rightValue: number[];
  editLayoutData: any[];
  indexOne: number;
  dialogVisible: boolean;
  confirm: () => any; //确认
  cancelEdit: () => any; //取消修改
  resetReason: () => any; //重置因子
  getObject: (value: any, direction: any, movedKeys: any) => void; //定义为函数类型,入参为any类型:无返参的普通函数
  filterMethod: (query: any, item: any) => boolean;
  //   handle: (item: string) => void;
  //   [propName: string]: any; //该对象还可加入任意属性值类型
}  

let data = reactive({
      dialogVisible: false,
      leftValue: [],
      rightValue: [],
      editLayoutData: [],
      indexOne: 0,
      //搜索
      confirm: () => {
        data.dialogVisible = false;
        console.log("搜索", data.rightValue);
      },
      //搜索
      filterMethod: (query: any, item: any): boolean => {
        return item.label.indexOf(query) > -1;
      },
      //取消修改
      cancelEdit: (): any => {
        data.dialogVisible = false;
        data.leftValue = [];
        data.rightValue = [];
        data.editLayoutData = [];
        data.indexOne = 0;
      },
      //重置因子
      resetReason: (): any => {
        data.leftValue = [];
        data.rightValue = [];
        data.editLayoutData = [];
        data.indexOne = 0;
      },
      // 右侧列表元素变化时触发
      // value右边框里面所有的key值  direction是方向(left和right),movedKeys是移动的key值
      getObject: (value: any, direction: any, movedKeys: any): void => {
        // 判断移动方向
        if (direction === "right") {
          // 找出key值,然后根据key值找到下标,进行对控制删除显示的键进行修改状态
          movedKeys.map((item: number, index: number) => {
            data.editLayoutData.filter((i, k: number) => {
              if (i.id === item) {
                data.indexOne = k;
              }
            });
            // isUsed是删除,未删除的状态
            data.editLayoutData[data.indexOne].isUsed = 0;
          });
        } else {
          movedKeys.map((item: any) => {
            data.editLayoutData.filter((i, k: number) => {
              if (i.id === item) {
                data.indexOne = k;
              }
            });
            data.editLayoutData[data.indexOne].isUsed = 1;
          });
        }
      },
      //请求
      getList: () => {
        console.log("请求", 914326);
      },
    }) as dataobj;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java使用泛型方式两种泛型类和泛型方法。 1. 泛型类: 泛型类是指在类的定义使用类型参数。通过在类名后面使用尖括号<>来定义类型参数,并在类内部使用该类型参数来声明变量、方法参数或返回值类型。例如,下面是一个简单的泛型类的示例: ```java public class MyGenericClass<T> { private T value; public MyGenericClass(T value) { this.value = value; } public T getValue() { return value; } public void setValue(T value) { this.value = value; } } ``` 在上面的示例,`MyGenericClass` 类使用了一个类型参数 `T`。通过使用类型参数 `T`,我们可以在创建对象时指定具体的类型,例如: ```java MyGenericClass<Integer> genericInt = new MyGenericClass<>(10); MyGenericClass<String> genericString = new MyGenericClass<>("Hello"); ``` 2. 泛型方法: 泛型方法是指在方法的定义使用类型参数。通过在方法的返回类型前面使用尖括号<>来定义类型参数,并在方法内部使用该类型参数来声明变量、方法参数或返回值类型。例如,下面是一个简单的泛型方法的示例: ```java public class MyGenericMethod { public <T> void printArray(T[] array) { for (T element : array) { System.out.println(element); } } } ``` 在上面的示例,`printArray` 方法使用了一个类型参数 `T`。通过使用类型参数 `T`,我们可以在调用方法时指定具体的类型,例如: ```java MyGenericMethod genericMethod = new MyGenericMethod(); Integer[] intArray = {1, 2, 3}; String[] stringArray = {"Hello", "World"}; genericMethod.printArray(intArray); genericMethod.printArray(stringArray); ``` 以上就是在Java使用泛型两种方式泛型类和泛型方法。使用泛型可以增加代码的重用性和类型安全性,同时也可以避免类型转换的麻烦。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值