Rule: typedef
Requires type definitions to exist.
Notes:
TS Only
Config
Several arguments may be optionally provided:
"call-signature"
checks return type of functions."arrow-call-signature"
checks return type of arrow functions."parameter"
checks type specifier of function parameters for non-arrow functions."arrow-parameter"
checks type specifier of function parameters for arrow functions."property-declaration"
checks return types of interface properties."variable-declaration"
checks non-binding variable declarations."variable-declaration-ignore-function"
ignore variable declarations for non-arrow and arrow functions."member-variable-declaration"
checks member variable declarations."object-destructuring"
checks object destructuring declarations."array-destructuring"
checks array destructuring declarations.
Config examples
"typedef": [true, "call-signature", "parameter", "member-variable-declaration"]
Schema
{ "type": "array", "items": { "type": "string", "enum": [ "call-signature", "arrow-call-signature", "parameter", "arrow-parameter", "property-declaration", "variable-declaration", "variable-declaration-ignore-function", "member-variable-declaration", "object-destructuring", "array-destructuring" ] }, "minLength": 0, "maxLength": 10 }
Code examples:
Requires type definitions for call signatures
"rules": { "typedef": [true, "call-signature"] }
Passes
function add(x, y): number {
return x + y;
}
Fails
function add(x, y) {
return x + y;
}
Requires type definitions for arrow call signatures
"rules": { "typedef": [true, "arrow-call-signature"] }
Passes
const add = (x, y): number => x + y;
Fails
const add = (x, y) => x + y;
Requires type definitions for parameters
"rules": { "typedef": [true, "parameter"] }
Passes
function add(x: number, y: number) {
return x + y;
}
Fails
function add(x, y) {
return x + y;
}
Requires type definitions for arrow function parameters
"rules": { "typedef": [true, "arrow-parameter"] }
Passes
const add = (x: number, y: number) => x + y;
Fails
const add = (x, y) => x + y;
Requires type definitions for property declarations
"rules": { "typedef": [true, "property-declaration"] }
Passes
interface I {
foo: number;
bar: string;
}
Fails
interface I {
foo;
bar;
}
Requires type definitions for variable declarations
"rules": { "typedef": [true, "variable-declaration"] }
Passes
let x: number;
Fails
let x;
Requires type definitions for member variable declarations
"rules": { "typedef": [true, "member-variable-declaration"] }
Passes
class MyClass {
x: number;
}
Fails
class MyClass {
x;
}
Requires type definitions when destructuring objects.
"rules": { "typedef": [true, "object-destructuring"] }
Passes
interface FooBar {
foo: number;
bar: string;
}
const foobar = { foo: 1, bar: '2' };
const { foo, bar }: FooBar = foobar;
Fails
interface FooBar {
foo: number;
bar: string;
}
const foobar = { foo: 1, bar: '2' };
const { foo, bar } = foobar;
Requires type definitions when destructuring arrays.
"rules": { "typedef": [true, "array-destructuring"] }
Passes
const foobar = [1, '2'];
const [foo, bar]: Array<number | string> = foobar;
Fails
const foobar = [1, '2'];
const [foo, bar] = foobar;