---
title: "繼承和約束"
date: "2026-03"
category: "設計模式與架構"
tags: ["設計模式與架構"]
description: "這個地方有點意思，那就是繼承和約束，似乎有一點相通的意思，而且說到底，繼承本身也意味著對結構體本身的繼承，本質就是一種約束..."
source: "https://enriquemark.com/zh-hant/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> {}
```
