microsoft / microsoft/TypeScript
Intl.NumberFormat does not model required properties when `style` is set to `currency`
Open
Bug
Domain: lib.d.ts
Help Wanted
Needs Human Review
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 117
Description
⚙ Compilation target
ESNext
⚙ Library
ESNext
Missing / Incorrect Definition
According to the MDN docs, when style is set to currency, then the currency property must be provided.
This could be achieved through a discriminating union on the style property e.g.
interface NumberFormatParamsStyleDecimal {
style: "decimal"
}
interface NumberFormatParamsStyleCurrency {
style: "currency"
currency: string
}
type NumberFormatParams = NumberFormatParamsStyleDecimal | NumberFormatParamsStyleCurrency;
const numberFormat = (params: NumberFormatParams) => {};
numberFormat({
style: "decimal",
})
numberFormat({
style: "currency",
currency: "USD"
})
Sample Code
This fails at runtime, but does not fail compilation:
new Intl.NumberFormat("en", {
style: "currency",
currency: undefined
});
VM159:1 Uncaught TypeError: Currency code is required with currency style.
at new NumberFormat (<anonymous>)
at <anonymous>:1:1
Documentation Link
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.