File size: 738 Bytes
048b1e8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | import { createRule, isNullType } from '@typespec/compiler'
export const noNullableRule = createRule({
name: 'no-nullable',
description: 'Use `?` for optional properties.',
severity: 'warning',
messages: {
default:
"Don't use `| null`. If you meant to have an optional property, use `?`. (e.g. `myProp?: string`)",
},
create(context) {
return {
modelProperty: (property) => {
if (property.type.kind !== 'Union') {
return
}
if (
!property.node?.optional &&
[...property.type.variants.values()].some((x) => isNullType(x.type))
) {
context.reportDiagnostic({
target: property,
})
}
},
}
},
})
|