반응형
수학의 함수는 JSON과 같은 역할이다.
공역, 치역, 정의역
예를 들어 f(X) -> Y 라는 함수가 있다.
이때 X와 Y를 아래와 같이 정의하면
type X = 1 || 2 || 3;
type Y = 1 || 2 || 3 || 4;
함수 f의 JSON은 아래와 같이 정의 할 수 있다.
let f: {[key: X]: Y} = {
1: 1,
2: 2,
3: 3
};
그렇다면 정의역, 공역은 아래의 함수로 구할 수 있고.
정의역 = Object.keys(f);
공역 = Object.values(f);
치역은 value가 될 수 있는 모든 값이다.
치역 = Y
일대일 함수
일대일 함수는 Object f의 Value가 Array가 되지 않는 함수를 말한다.
typeof f == {[key: X]: Y}
typeof f != {[key: X]: Array<Y>}
일대일 대응
일대일 대응은 아래의 식이 true인 함수이다
let f: {[key: X]: Y} = { 1: 1, 2: 2, 3: 3 };
return Object.values(f) == Y;
항등 함수
Objecet f의 type이 아래와 같은 함수이다.
let f: {[key: X]: X};
상수 함수
key가 any지만 const varable을 return 하는 함수이다.
const constValue = 3;
function f(key: any) {
return constValue;
}
합성 함수
Object[Object[key]] 인 함수이다.
let f: {[key: X] : Y} = {
1: 4,
2: 5,
3: 6
};
let g: {[key: Y] : Z} = {
4: 7,
5: 8,
6: 9
};
(g·f)(x) = g(f(x)) // Math
(g·f)(x) = g[f[x]]
합성 함수의 성질
아래의 코드 그대로 이해하면 된다.
let f = { ... }
let g = { ... }
g·f != f·g // Math
g[f[x]] != f[g[x]]
if( g[f[x]] == f[g[x]] )
// means g == f
합성 함수의 성질2
function f(x: any) { return ... }
function g(x: any) { return ... }
function h(x: any) { return ... }
function merge(
a: (x: any) => any,
b: (x: any) => any
) {
return (x: any) => {
return a(b(x));
}
}
(f · g) · h = f · (g · h) // Math
merge(merge(f, g), h) == merge(f, merge(g, h))
역함수
key를 value로 사용하고, value를 key로 사용하는 함수이다.
function getInverseObject(
a: {[key: any]: any}
) {
let newFunction: {[key: any]: any} = {};
Object.keys(a).forEach((key) => {
newFunction[
a[key]
] = key;
});
return newFunction;
}
반응형