Oein's Story
소개
[수학&코딩] Typescript로 표현한 함수
2023-05-28
고등1학년
수학의 함수는 JSON과 같은 역할이다.

공역, 치역, 정의역

예를 들어 라는 함수가 있다.
이때 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}

일대일 대응

일대일 대응은 아래의 식이 true인 함수이다
let f: {[key: X]: Y} = { 1: 1, 2: 2, 3: 3 };

returnObject.values(f) == Y;

항등 함수

Objecet f의 type이 아래와 같은 함수이다.
let f: {[key: X]: X};

상수 함수

key가 any지만 const varable을 return 하는 함수이다.
const constValue = 3;

functionf(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

functionf(x: any) {return ... }
functiong(x: any) {return ... }
functionh(x: any) {return ... }
functionmerge(
	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;
}
profile
박오인
개발자가 되고 싶은 영원한 잼민이