Module 2 The Type System
Measure Words
Module 2: The Type System
Measure Words — Why Every Noun Needs a Type Annotation
You know how TypeScript won't let you write const x = getValue() in strict mode
without a type? Chinese has the same rule — but for nouns. Every time you count something,
point at something, or say "some" of something, you must include a measure word
(量词 ) between the number and the noun.
Skip it and the sentence doesn't compile. Use the wrong one and you get a type error — not a crash, but the native speaker equivalent of a code smell.
1. Why Every Noun Needs a Type
In English, you can say "three books." Number + noun. Done. In Chinese, that's a syntax error. You must say:
三本书
three [volume-of] book
The word 本 is the
measure word — the classifier that tells you what type of thing you're counting.
本 is for bound things:
books, magazines, notebooks. You can't use it for fish or cars any more than you can assign a
string to an int.
// TypeScript: every variable needs a type const books: Book[] = getBooks(); // typed const books = getBooks(); // error in strict mode — needs annotation // Chinese: every counted noun needs a measure word 三本书 // typed: three [bound-thing] books ✓ 三书 // error: missing measure word ✗
The pattern is always the same:
Number/Demonstrative + MeasureWord + Noun // It's a type annotation: value: Type = Noun
2. 个 Is the any Type
Meet 个 ().
It's the generic measure word — the one you use when you don't know or can't remember the correct one.
It works with most nouns. It is, without question, the any of Chinese classifiers.
// TypeScript any — it works, but it's sloppy const thing: any = getBook(); // compiles, but you lost type info // 个 — it works, but native speakers notice 一个书 // understood, but grammatically lazy 一本书 // correct — you used the right classifier
Some nouns actually take 个 as their proper classifier:
| Chinese | Pinyin | English | Notes |
|---|---|---|---|
| 一个人 | one person | 个 is the correct MW for people (casual) | |
| 两个苹果 | two apples | 个 is correct for most round fruits | |
| 一个问题 | one question/problem | 个 is the standard MW here | |
| 三个月 | three months | 个 is correct for months |
any — your code runs, nobody
crashes. But as you level up, replace any with proper types. The same applies here:
learn the specific measure words over time and your Chinese goes from "works" to "clean."
3. The Common Type Families
Measure words aren't random. They group nouns by physical or conceptual shape — flat things, long things, handled things. Think of them as type families. Here's your type definition file:
// measure-words.d.ts — Chinese Classifier Type Definitions type Bound = 本 // books, magazines, notebooks type Flat = 张 // paper, tickets, tables, photos, beds type Long = 条 // fish, roads, rivers, pants, snakes type Handled = 把 // umbrellas, chairs, knives, keys type Cup = 杯 // cups/glasses of liquid type Bottle = 瓶 // bottles of liquid type Item = 件 // clothing, luggage, matters, events type Animal = 只 // small animals (cats, dogs, birds) type Person = 位 // people (polite/formal) type Vehicle = 辆 // cars, bikes, buses type Currency = 块 // money (yuan), chunks of stuff type Pair = 双 // shoes, chopsticks, hands, eyes type Layer = 层 // floors, layers, coats of paint type Occur = 次 // times, occurrences type Some = 些 // some, several (like T[])
Let's go through each one with examples:
| MW | Pinyin | Type | Example | English |
|---|---|---|---|---|
| 本 | Bound things | 一本书 | one book | |
| 张 | Flat things | 两张纸 | two sheets of paper | |
| 条 | Long/thin things | 一条鱼 | one fish | |
| 把 | Things with handles | 一把伞 | one umbrella | |
| 杯 | Cups/glasses of | 一杯咖啡 | one cup of coffee | |
| 瓶 | Bottles of | 两瓶啤酒 | two bottles of beer | |
| 件 | Items/matters | 一件衣服 | one piece of clothing | |
| 只 | Small animals | 三只猫 | three cats | |
| 位 | People (polite) | 一位老师 | one teacher (respectful) | |
| 辆 | Vehicles | 一辆车 | one car | |
| 块 | Money / chunks | 十块钱 | ten yuan (bucks) | |
| 双 | Pairs | 一双鞋 | one pair of shoes | |
| 层 | Floors / layers | 三层楼 | three floors | |
| 次 | Times / occurrences | 两次 | twice (two times) | |
| 些 | Some / several | 一些人 | some people |
4. The Pattern: Num/Dem + MW + Noun
The syntax is rigid and beautiful. A measure word always sits between the number (or demonstrative) and the noun. Always. No exceptions.
// The type annotation pattern
Number + MeasureWord + Noun
│ │ │
│ │ └── the value
│ └────────────── the type
└──────────────────────── how many
// Or with demonstratives:
Demonstrative + MeasureWord + Noun
this/that │ │
└── type └── value
Let's see this in action with all three slot-fillers — numbers, 这 (this), and 那 (that):
| Chinese | Pinyin | Pattern | English |
|---|---|---|---|
| 一本书 | 1: Bound = 书 |
one book | |
| 这张纸 | this: Flat = 纸 |
this sheet of paper | |
| 那只猫 | that: Animal = 猫 |
that cat | |
| 三杯咖啡 | 3: Cup = 咖啡 |
three cups of coffee | |
| 这辆车 | this: Vehicle = 车 |
this car | |
| 两双筷子 | 2: Pair = 筷子 |
two pairs of chopsticks | |
| 五瓶水 | 5: Bottle = 水 |
five bottles of water | |
| 那件衣服 | that: Item = 衣服 |
that piece of clothing |
2 and a quantity Quantity(2).
两本书 is correct.
二本书 is wrong.
5. Type Errors
What happens when you use the wrong measure word? The same thing that happens when you
pass a string where a function expects a number: it doesn't crash
the program, but something is clearly wrong. People will understand you, but they'll wince.
// Type error: wrong classifier
一张书 // ✗ ERROR: Type 'Flat' is not assignable to type 'Bound'
// Expected: 本 (bound things)
// Received: 张 (flat things)
// A book is bound, not flat.
一本纸 // ✗ ERROR: Type 'Bound' is not assignable to type 'Flat'
// Paper is flat, not bound.
一条猫 // ✗ ERROR: Type 'Long' is not assignable to type 'Animal'
// A cat is an animal, not a long thin thing.
// (Unless it's a very weird cat.)
Here are common mistakes and their corrections:
| Wrong | Why It's Wrong | Correct | Right Type |
|---|---|---|---|
| 一张书 | Books aren't flat — they're bound | 一本书 | Bound |
| 一本车 | Cars aren't books — they're vehicles | 一辆车 | Vehicle |
| 一条猫 | Cats aren't long and thin — they're animals | 一只猫 | Animal |
| 一杯啤酒 | Beer comes in bottles, not cups (usually) | 一瓶啤酒 | Bottle |
| 一把桌子 | Tables are flat, not handled | 一张桌子 | Flat |
// Think of it as TypeScript's strict mode:
function buy(quantity: number, type: MeasureWord, item: Noun): Purchase {
if (!type.accepts(item)) {
throw new TypeError(
`MW '${type}' is not assignable to noun '${item}'.`
+ ` Expected: '${item.expectedMW}'`
);
}
return { quantity, type, item };
}
buy(1, 本, 书); // ✓ Book is Bound
buy(1, 张, 书); // ✗ TypeError: 张 (Flat) is not assignable to 书 (Bound)
buy(1, 个, 书); // ⚠ Works (any), but loses type safety
6. Practice — Typing Your Nouns
Let's run through real sentences that use measure words. For each one, pay attention to which measure word is used and why. We'll annotate the type.
// 1. Buying a book 我想买一本书。 [S:我] [V:想买] [1: Bound = 书] // Wǒ xiǎng mǎi yì běn shū. // I want to buy a book.
// 2. Pointing at a photo 这张照片很漂亮。 [this: Flat = 照片] [很漂亮] // Zhè zhāng zhàopiàn hěn piàoliang. // This photo is very pretty.
// 3. Ordering coffee 我要两杯咖啡。 [S:我] [V:要] [2: Cup = 咖啡] // Wǒ yào liǎng bēi kāfēi. // I want two cups of coffee.
// 4. Talking about pets 她有三只猫。 [S:她] [V:有] [3: Animal = 猫] // Tā yǒu sān zhī māo. // She has three cats.
// 5. Describing a road 那条路很长。 [that: Long = 路] [很长] // Nà tiáo lù hěn cháng. // That road is very long.
// 6. Addressing a teacher (politely) 这位老师教得很好。 [this: Person = 老师] [V:教得很好] // Zhè wèi lǎoshī jiāo de hěn hǎo. // This teacher teaches very well.
// 7. Parking a car 我买了一辆新车。 [S:我] [V:买了] [1: Vehicle = 新车] // Wǒ mǎi le yí liàng xīn chē. // I bought a new car.
// 8. Asking about price 这块蛋糕多少钱? [this: Currency = 蛋糕] [多少钱]? // Zhè kuài dàngāo duōshao qián? // How much is this piece of cake?
// 9. Counting occurrences 我去过两次中国。 [S:我] [V:去过] [2: Occur = 中国] // Wǒ qù guo liǎng cì Zhōngguó. // I've been to China twice.
// 10. Talking about floors 他住在五层。 [S:他] [V:住在] [5: Layer] // Tā zhù zài wǔ céng. // He lives on the fifth floor.
// 11. Picking up an umbrella 请给我那把伞。 [V:请给] [S:我] [that: Handled = 伞] // Qǐng gěi wǒ nà bǎ sǎn. // Please give me that umbrella.
// 12. Shopping for pants 我想买一条裤子。 [S:我] [V:想买] [1: Long = 裤子] // Wǒ xiǎng mǎi yì tiáo kùzi. // I want to buy a pair of pants. // (Pants are long and thin when hanging — hence 条!)
// 13. Asking about matters 你有几件事? [S:你] [V:有] [how-many: Item = 事]? // Nǐ yǒu jǐ jiàn shì? // How many matters/things do you have (to deal with)?
// 14. Talking about "some" things (array type) 一些学生没来。 [1: Some = 学生] [V:没来] // Yìxiē xuéshēng méi lái. // Some students didn't come. // 些 is like T[] — it makes things plural/indefinite.
// 15. Buying shoes 我买了一双鞋。 [S:我] [V:买了] [1: Pair = 鞋] // Wǒ mǎi le yì shuāng xié. // I bought a pair of shoes.
// 16. Counting tickets 他有四张票。 [S:他] [V:有] [4: Flat = 票] // Tā yǒu sì zhāng piào. // He has four tickets. // (Tickets are flat pieces of paper — hence 张.)
// 17. Drinking water from a bottle 请给我一瓶水。 [V:请给] [S:我] [1: Bottle = 水] // Qǐng gěi wǒ yì píng shuǐ. // Please give me a bottle of water.
Type System Summary
/** * Chinese Measure Word Type System v1.0 * * CORE RULE: * Number/Demonstrative + MeasureWord + Noun * You CANNOT count or point at a noun without a type annotation. * * THE any ESCAPE HATCH: * 个 (gè) works for most nouns in a pinch — like TypeScript's `any`. * Use it to ship, then refactor to proper types. * * COMMON TYPES: * 本 (běn) → Bound: books, magazines, notebooks * 张 (zhāng) → Flat: paper, tickets, tables, photos * 条 (tiáo) → Long: fish, roads, rivers, pants * 把 (bǎ) → Handled: umbrellas, chairs, knives * 杯 (bēi) → Cup: cups of liquid * 瓶 (píng) → Bottle: bottles of liquid * 件 (jiàn) → Item: clothing, luggage, matters * 只 (zhī) → Animal: small animals * 位 (wèi) → Person: people (polite) * 辆 (liàng) → Vehicle: cars, bikes, buses * 块 (kuài) → Currency: money (yuan), chunks * 双 (shuāng) → Pair: shoes, chopsticks * 层 (céng) → Layer: floors, layers * 次 (cì) → Occur: times, occurrences * 些 (xiē) → Some: plural/indefinite (like T[]) * * TYPE ERRORS: * Wrong MW = understood but sloppy (like a linting warning). * Missing MW = syntax error. Don't skip it. * * KEY INSIGHT: * 两 (liǎng) for "two of something" before MW. * 二 (èr) for the digit 2 in math/counting. * * NEXT MODULE: Tense without Tense (Aspect Particles) * → Chinese doesn't conjugate for tense. Instead it uses particles * to mark whether an action is completed, experienced, or ongoing. */
You've now internalized the Chinese type system. Every noun gets an annotation. The measure word
tells the listener what shape of thing you're talking about — bound, flat, long, handled, liquid,
living. Start with 个 for
everything, then gradually replace your any types with proper classifiers as you learn them.
Your Chinese will get stricter and cleaner over time — exactly like a codebase migrating from
JavaScript to TypeScript.