首页 > 其他分享 >ts-泛型&类型声明文件

ts-泛型&类型声明文件

时间:2024-11-07 13:29:58浏览次数:3  
标签:count name ts number user 泛型 声明

泛型

泛型允许我们在定义函数、类或接⼝时,使⽤类型参数来表示未指定的类型,这些参数在具体 使⽤时,才被指定具体的类型,泛型能让同⼀段代码适⽤于多种类型,同时仍然保持类型的安全性

泛型函数
// 设置泛型使用<T>,T是自定义名称,在函数中使用T表示该类型
function user<T>(data:T):T{
    return data
}

// 可以设置多个泛型,返回值可以是T或者U类型
function  info<T,U>(a:T,b:U): T | U{
    return  a
}


// 设置泛型为string
user<string>("a")


info<string,number>("a",1)
泛型接口
interface UserInterface<T>{
    name:T,
    age:number
}


// 设置接口的T泛型为string
let user:UserInterface<string>


user = {name:"1",age:2}
泛型约束
// 自定义一个接口,其中有name属性
interface UserInterface{
    name:string
}



// 设置的泛型T继承自UserInterface接口, 即传入的类型T,必须具有name属性,且是string
function info<T extends UserInterface>(data:T):void{
    console.log(data.name)
}



let user = {name:"1"}
info(user)
泛型类
class  User<T>{
    constructor(public name:T) {
    }
}

const user = new User<string>("1")

类型声明文件

类型声明⽂件是 TypeScript 中的⼀种特殊⽂件,通常以 .d.ts 作为扩展名。它的主要作⽤ 是为现有的 JavaScript 代码提供类型信息,使得 TypeScript 能够在使⽤这些 JavaScript 库 或模块时进⾏类型检查和提示

// js文件
// export用于将模块中的变量、函数、类等内容暴露(提供)给其他模块使用
// 这是现代 JavaScript 模块化编程的重要组成部分
// 它使得代码可以被组织成独立的模块,每个模块有自己的作用域,并且可以选择性地向外共享内容

export  function count(a,b){
    return a*b
}
// .d.ts文件

// 使用declare声明的内容只是告诉 TypeScript 编译器某个变量、函数或模块的存在和结构,但不会在运行时产生实际的代码。
// 所以在运行时这些声明的内容确实存在,否则可能会导致运行时错误

// 声明函数,告诉ts有这个函数
declare  function  count(a:number,b:number):number

declare  function print(a:number,b:number):void


// 将count,print暴露出去
export {count,print}
// ts文件

// 导入b.d.ts中的count和print
import {count, print} from "./b";
count(1,2) 

标签:count,name,ts,number,user,泛型,声明
From: https://www.cnblogs.com/Mickey-7/p/18531986

相关文章

  • c语言中函数体中的变量声明不能使用和形参相同的变量名
     001、[root@PC1test]#lstest.c[root@PC1test]#cattest.c#include<stdio.h>intmax(inta,intb)//创建一个名为max的函数{intk=100;if(a>b){returna;}......
  • ts-类和接口
    override继承classInfo{name:stringage:numberconstructor(name:string,age:number){this.name=namethis.age=age}info(){console.log(this.name,this.age)}}classUserextendsInfo{ext:string......
  • 提供一个基本的cmakelists.txt文件
     project(ftptest)message("----------cmake${PROJECT_NAME}----------start")#设置构建类型为Release#set(CMAKE_BUILD_TYPERelease)set(CMAKE_VERBOSE_MAKEFILEON)#set(CMAKE_CXX_FLAGS"$ENV{CXXFLAGS}-rdynamic-O0-ggdb-std=c++11-Wall-Wno-......
  • ts-类型
    TypeScript由微软开发,是基于JavaScript的⼀个扩展语⾔。TypeScript包含了JavaScript的所有内容,即:TypeScript是JavaScript的超集。TypeScript增加了:静态类型检查、接⼝、泛型等很多现代开发特性,更适合⼤型项⽬的开发。TypeScript需要编译为JavaScript,然......
  • 个人练习前端技术使用Bootstrap、JQuery、thymeleaf
    说明:本代码只是为了本人练习前后端联动技术,包含html,jquery,thymeleaf模板、ajax请求及后端功能联动,方便自己查找及使用。@目录代码场景场景1.table批量查询功能(有默认值),点击"查询最新数据"从后台查询覆盖默认显示的数据场景2.新增,点击“新建”显示form表单,提交成功后隐藏form表......
  • python: more Layer Architecture and its Implementation in Python and sql server
    sqlserver:createtableSchool--創建表(SchoolIdchar(5)NOTNULLPRIMARYKEY,SchoolNamenvarchar(500)NOTNULLDEFAULT'',SchoolTelNovarchar(8)NULLDEFAULT'',);gomodel:#encoding:utf-8#版权所有......
  • P10833 [COTS 2023] 下 Niz
    题目链接主要算法分治(最大值分治),st表思路1.因为我们考虑最主要的限制条件是最大值和排列,所以如果我们知道最大值就知道答案的长度。所以考虑按最大值分治,统计左边对右边的贡献。2.接下来就是如何快速考虑一个区间是否合法,一个显然的是没有相同数,所以可以记前一个数的位置的最......
  • C# WebSocketSharp 框架的用法
    一、概述WebSocketSharp是一个C#实现websocket协议客户端和服务端,WebSocketSharp支持RFC6455;WebSocket客户端和服务器;消息压缩扩展;安全连接;HTTP身份验证;查询字符串,起始标题和Cookie;通过HTTP代理服务器连接;.NETFramework3.5或更高版本(包括兼容环境,如Mono)。github地址ht......
  • 《SparkSQL--通过ThriftServer连接DataGrip》
    ThriftServer功能:类似于HiveServer2,负责解析客户端提交的SQL语句,转换成Spark的任务进行执行本质:Spark中的一个特殊的程序,利用程序的资源运行所有SQL,该程序除非手动关闭,否则一直运行 启动服务,该服务不会停止,一直在后台启动,假如启动不了,记得查看日志。/opt/installs/spark/sb......
  • c语言中声明数组时, 元素个数必须使用常量表达式
     001、[root@PC1test]#lstest.c[root@PC1test]#cattest.c##测试程序#include<stdio.h>intmain(void){intvar1=5;//初始化一个变量var1intarray1[var1]={3,5,8,4,9};//初始化数组return0;}[......