---
title: "继承和约束"
date: "2026-03"
category: "设计模式与架构"
tags: ["设计模式与架构"]
description: "这个地方有点意思，那就是继承和约束，似乎有一点相通的意思，而且说到底，继承本身也意味着对结构体本身的继承，本质就是一种约束..."
source: "https://enriquemark.com/zh-hans/posts/%E7%BB%A7%E6%89%BF%E5%92%8C%E7%BA%A6%E6%9D%9F"
---

这个地方有点意思，那就是继承和约束，似乎有一点相通的意思，而且说到底，继承本身也意味着对结构体本身的继承，本质就是一种约束。只不过ts里面更加灵活，它是一种鸭子类型，也就是只要结构一样就行，但C#这里必须得是继承的。

```TS
// TypeScript
// 这里的 extends 虽然隐含了继承，但只要结构一样也能判定通过
function foo<T extends JobBase<T>>() {}

// C# 等價
// 但是这里就必须得是继承了
void Foo<T>() where T : JobBase<T> {}
```
