Generic Class
예제1
Generic Function
예제1
Generic Type
예제1
type Context = object;
type Context2<T = object> = T;
interface Fruit {
apple : number
}
const context: Context = () => { }
const context2: Context2 = () => { }
const context3 : Context2<Fruit> = {
apple : 3
}
TypeScript
* 일단 typescript에서는 함수도 object로 인식하는거 같다.
Context 와 Context2는 모두 Object타입이다.
하지만 Context2는 어떤 Object인지 추후에 지정해줄 수 있다.
context2는 어떤 타입인지 굳이 명시해주지 않았기 때문에 Object는 뭐든 가능했지만
context3는 Fruit타입을 명시했기 때문에 그에 따라야 한다.
Class
예제1
Function
예제1
Value in Object
예제1
interface OptionsData {
validationRules?: ReadonlyArray<(ctx: ValidationContext) => ASTVisitor> | null
}
const option: OptionsData = {
validationRules: [(ctx: ValidationContext) => {
return {
AST : "AST"
}
}]
}
JavaScript
Array에 Function이 인자로 들어 갈때
interface OptionsData {
customValidateFn?:
(
(schema: GraphQLSchema,
documentAST: DocumentNode,
rules?: ReadonlyArray<ValidationRule>
) => ReadonlyArray<GraphQLError>
)
| null
}
const option: OptionsData = {
customValidateFn: (schema, documentAST, rules) => {
return [
{Error : "error"}
]
},
}
JavaScript
Function이 들어 갈 때 ( )괄호를 사용하여 타입 지정
graphql-express index
Others...
예제 1
export type Scalars = {
ID: string,
};
export type Book = {
id: Scalars['ID'],
};
TypeScript
객체에서 squreBraket을 이용하여 값 가져오기
예제 2
type Maybe<T> = T | null; // type Menu = Menu | null;
type MenuCreatePayload = {
menu?: Maybe<Menu>,
users?: Array<Maybe<User>>,
};
TypeScript
특정 타입이 null을 가질 때 제네릭하게 사용 가능