编程语言
首页 > 编程语言> > 在 TypeScript 中何时使用类型与接口?

在 TypeScript 中何时使用类型与接口?

作者:互联网

让我们深入研究 TypeScript 中的一个常见问题:何时使用“类型”与“接口”。了解这些构造的正确使用对于编写可维护且健壮的代码至关重要。让我们使用板球世界中引人入胜的示例来探讨五种不同的情况,并讨论哪种方法更适合每种情况。

情况 1:定义对象结构

定义对象的结构时,可以使用“类型”和“接口”。但是,如果将来需要扩展或实现该结构,建议选择“interface”。让我们考虑一个场景,我们定义板球运动员信息的结构:

接口 CricketPlayer {
名称:字符串;
年龄:数字;
团队:字符串;
} 
const 球员:CricketPlayer = {
姓名:“Virat Kohli”,“Virat Kohli”
年龄:33
团队:“印度”
};

在这种情况下,“接口”是合适的,因为它允许轻松扩展和实现。

情况 2:组合类型或接口

当组合多个类型或接口时,“type”是更灵活的选项。假设我们要定义板球比赛的类型,包含球员详细信息和比赛统计数据:

类型 CricketMatchPerformance  =  CricketPlayer  & {
 场地: 字符串;
 得分: 数量;
 采取的三柱门: 数量;
} ; 
const match:  CricketMatchPerformance  = { 
 name:  "Virat Kohli" ,
 年龄:  33 , 
 team:  "India" ,
 场地:  "MCG" , 
 runScored:  92 , 
 wicketsTaken:  1 , 
} ;

通过使用“type”,我们可以轻松地将多种类型合并为一种类型,从而使我们能够组合复杂的结构。

情况 3:扩展/实施

当您需要扩展或实现现有类型或接口时,“接口”是首选。考虑这样一种情况,我们有一个基本的板球运动员界面,并且想要为击球手创建一个继承球员界面的界面:

接口 Batsman 扩展 CricketPlayer {
 击球平均数数字
} 
const 击球手:击球手= { 
 name : "Rohit Sharma" ,
 年龄: 34 , 
 team : "India" , 
 battingAverage : 49.27 , 
};

使用“接口”使我们能够无缝扩展现有结构。

情况 4:函数签名

描述函数签名时,可以使用“类型”和“接口”。但是,如果您需要严格实现函数签名,建议使用“interface”。让我们创建一个函数来计算击球率:

接口 BattingAverageCalculator { 
(跑数:数字,数:数字):数字; 
} 
constcalculateBattingAverage  : BattingAverageCalculator = ( runScored: number , inings: number ) => runningScored / innings; const avg =计算击球平均数( 4210 , 96 ); 控制台log ( `击球率:${avg} ` );




在这种情况下,“接口”提供了函数签名的清晰定义,有助于严格实现和更好的可读性。

情况 5:并集和交集类型

在处理并集或交集类型时,建议选择“type”。让我们考虑一个场景:

定义球的类型,可以是板球或网球:

类型 =板球| 网球
接口 CricketBall {
 重量:数量; 
 颜色字符串
}
接口 TennisBall {
 大小字符串
 颜色字符串
} 
const  cricketBall : CricketBall = {
 重量: 156 ,
 颜色: "红色" , 
}; 
常量 网球TennisBall = {
 尺寸“小”
 颜色“黄色”
};

使用“type”允许我们创建联合类型,将不同的类型组合成一个类型。

通过考虑这五种情况,我们探索了 TypeScript 中“类型”和“接口”的适当用例。请记住,“接口”更适合定义对象结构、扩展/实现或描述函数签名。另一方面,“type”在组合类型、并集/交集类型以及创建别名方面提供了灵活性。

标签:TypeScript,接口,函数签名
来源: