[ts]接口

复制代码
interface LabeledValue {
  label?: string; // 可选属性
}

function printLabel(labelObj: LabeledValue) {
  console.log(labelObj.label);
}
const myObj = { size: 10, label: 'size 10 object' };
printLabel(myObj);

interface Point {
  readonly x: number;
  readonly y: number; // 只读属性
}

const ro: ReadonlyArray<number> = [1, 2, 3, 4];

interface SquareConfig {
  color?: string,
  width?: number,
  [propName: string]: any;
}

function createSquare(config: SquareConfig): void {
  console.log(config);
}
const mySquare = createSquare({ colour: 'red', width: 100 });


// 函数类型
interface SearchFunc {
  (source: string, subString: string): boolean;
}
// 可索引的类型
interface StringArray {
  [index: number]: string;
}
// 类类型
interface ClockInterface {
  currentTime: Date;
  setTime(d: Date): void;
}
class Clock implements ClockInterface {
  currentTime: Date
  setTime(d: Date) {
    this.currentTime = d;
  }
  constructor() {
    this.currentTime = new Date();
  }
}
// 继承接口
interface Shape {
  color: string;
}
interface Square extends Shape {
  sideLength: number;
}
// 混合类型
interface Counter {
  (start: number): string;
  interval: number;
  reset():void;
}
function getCounter(): Counter {
  let counter = function (start:number): string {
    return `${start}`;
  } as Counter;
  counter.interval = 123;
  counter.reset = function(){};
  return counter;
}
// 接口继承类
class Control {
  private state: any;
}
interface SelectableControl extends Control {
  select(): void;
}
class Button extends Control implements SelectableControl {
  select() {}
}
class TextBox extends Control {
  select() {}
}
复制代码

 

posted @   zhoulixue  阅读(68)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示