์๋ ํ์ธ์, PixiJS ์ปค๋ฎค๋ํฐ,
ํต์ฌ ๋ฐ ๋ชจ๋ ์ข ์์ฑ์ ๋ณํํ์ฌ PixiJS๋ฅผ TypeScript๋ก ๋ณํํ๋ ์ฃผ์ ์ด์ ํ์ ๋๋ฌํ์ต๋๋ค. ์ด์ ์ด ๊ณ ๋น๋ฅผ ๋์์ผ๋ฏ๋ก ์ด ์์ ํต์ฌ ํจํค์ง ์ธํธ์ ์์กดํ๋ ๋๋จธ์ง ํจํค์ง์์ ์์ํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ด ํจํค์ง์ ๋๋จธ์ง ๋ถ๋ถ์ ๋ณํํ๊ธฐ ์ํด ๊ฐ๋ฐ์์ ์์ ํ์คํ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํจํค์ง ๋ณํ์ ๊ด์ฌ์ด ์์ผ์๋ฉด ์ด๋ค ํจํค์ง์ธ์ง ์๋ ค์ฃผ์ญ์์ค. ๊ธฐ์กด์ ์๋ฃ๋ PR์์ ํ์ธํ ์ ์๋ ํจํค์ง ๋ณํ์ ๋ํ ๋ช ๊ฐ์ง ์ง์นจ์ด ์์ต๋๋ค.
Gotchyas ๋ณํ
npm run docs
๋ฅผ ํตํด ์ฌ๋ฐ๋ฅด๊ฒ ๋น๋๋๊ณ ํ์๋๋์ง ํ์ธํ์ญ์์ค.git mv
๋ฅผ ์ฌ์ฉํ์ฌ JS ํ์ผ์ ์ด๋ฆ์ TS๋ก ๋ฐ๊พธ์ญ์์ค. ๊ทธ๋ ์ง ์์ผ๋ฉด Git ๊ธฐ๋ก์ด ์์ค๋ฉ๋๋ค. ์ผ๋ถ Git GUI๋ ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ์ ํํ์ง ์์ ์ ์์ต๋๋ค.public
์ก์ธ์ค ์์ ์๋ฅผ ์ถ๊ฐํ์ง ๋ง์ญ์์ค. ์ด๋ฌํ ๊ฒฝ์ฐ ์ก์ธ์ค๋ฅผ ์ ์๋์ง ์์ ์ํ๋ก ๋์ญ์์ค.ํจํค์ง๋ฅผ ์ฒญ๊ตฌํ๋ ค๋ฉด ํด๋น ํจํค์ง์ ๋ํ PR ์ด์์ ์์ฑํ์ญ์์ค.
@pixi/accessibility
#6379@pixi/app
#6376@pixi/constants
#6173@pixi/core
#6340, #6373@pixi/display
#6261, #6339, #6349, #6371@pixi/extract
#6381@pixi/graphics
#6352@pixi/interaction
#6656@pixi/loaders
#6385@pixi/math
#6141@pixi/mesh-extras
#6396@pixi/mesh
#6382@pixi/mixin-cache-as-bitmap
#6630@pixi/mixin-get-child-by-name
#6621@pixi/mixin-get-global-position
#6637@pixi/particles
#6449@pixi/polyfill
#6654, #6669@pixi/prepare
#6481@pixi/runner
#6164@pixi/settings
#6315@pixi/sprite-animated
#6397@pixi/sprite-tiling
#6398@pixi/sprite
#6375@pixi/spritesheet
#6389@pixi/text-bitmap
#6479@pixi/text
#6390@pixi/ticker
#6186@pixi/unsafe-eval
#6655@pixi/utils
#6262@pixi/canvas-display
#6659@pixi/canvas-extract
#6503@pixi/canvas-graphics
#6663@pixi/canvas-mesh
#6664@pixi/canvas-particles
#6622@pixi/canvas-prepare
#6657@pixi/canvas-renderer
#6499@pixi/canvas-sprite-tiling
#6665@pixi/canvas-sprite
#6658@pixi/canvas-text
#6666@pixi/filter-alpha
#6383@pixi/filter-blur
#6383@pixi/filter-color-matrix
#6383@pixi/filter-displacement
#6383@pixi/filter-fxaa
#6383@pixi/filter-noise
#6383pixi.js-legacy
#6673 ์งํ ์ค @bigtimebuddypixi.js
#6673 ์งํ ์ค @bigtimebuddy์ถ๊ฐ ํ:
๊ธฐ์กด ๊ฐ์ ธ์ค๊ธฐ์ ๋ณ๋๋ก ๋ชจ๋ ์ถ๊ฐ import
(์ค์ ๋ก๋ ๊ฐ์ ธ์ค๊ธฐ ์ ํ)๋ฅผ ๋ฃ์ผ์ญ์์ค. ์๋ก์ด TS ๋ฒ์ ์ด ์ถ์๋๋ฉด import type
๋ฅผ ์ถ๊ฐํ ์์ ์
๋๋ค. ๊ทธ๋ฌ๋ linter๋ ๋์ผํ ๋ชจ๋์์ import
์ ๋ ์ค์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ง์ ๊ฒ์
๋๋ค. ๊ทธ๋ฐ ๊ฒฝ์ฐ์๋ ๊ทธ๊ฒ๋ค์ ํผํฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
Array<X>
๋ฐ X[]
ํ๊ธฐ๋ฒ์ ๋ชจ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ ๋ ์ผ๋ฐ์ ์ผ๋ก ์์ฃผ ํธ์-ํ๋๋ ๊ตฌ์กฐ(์ผ๋ช
๋ชฉ๋ก)์ Array<X>
๋ฅผ ์ฌ์ฉํฉ๋๋ค. X[]
๊ณ ์ ๋ ์์ ๊ธธ์ด๋ฅผ ๊ฐ์ง๊ฑฐ๋ ํฌ๊ธฐ๊ฐ ๊ฐ์ ์์น์์ ๊ฒฐ์ ๋๋ฉด ๊ตฌ์ฑ๋ฉ๋๋ค(์ผ๋ฐ ๋ฐฐ์ด).
readonly
ํ๋๊ฐ destroy()
์์๋ง ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ - any
๋ณํ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ๊ณณ์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ readonly
์ ๊ฑฐํ์ญ์์ค. ๋์ค์ private field
+ readonly property
๋ก ๋ง๋ค์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ๋๋ฅผ ์ด๊ธฐ์ง ์๋ ํ ์ด๋ฒ ์ฃผ๋ง์ @pixi-text
๋ฅผ ํ ์ ์์ต๋๋ค.
์ฐธ๊ณ : @pixi-tiling์๋ PIXI.TilingSprite.from
๊ฐ ํฌํจ๋๋ฉฐ TS์์ ํ ์ ์๋ ๋ฐค์
๋๋ค. ์ฐ๋ฆฌ๋ ๋จ์ง ๊ทธ๊ฒ์ ๋น์ถ์ฒํ ์ ์์ต๋๋ค.
ํ๋ด์ธ์, @qtiki. ์ด์ํ ์ ์ ๋ฐ๊ฒฌํ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ ์ฃผ๋ง์ ์จ๋ผ์ธ์ ์ ์ํ๊ฒ ์ต๋๋ค.
์ข์, @qtiki , ๋น์ ์ ์ ํ์ ์ด์ PR์ ๋ณด๋ธ ํ ์์ฝ๋ฉ๋๋ค.
๊ฐ์ฌ ํด์!
๋์. Draft PR์ ๋ณํํ ํจํค์ง๋ฅผ ์์ฒญํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋๋ค. ๋์์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค
์ข์, @qtiki , ๋น์ ์ ์ ํ์ ์ด์ PR์ ๋ณด๋ธ ํ ์์ฝ๋ฉ๋๋ค.
๊ฐ์ฌ ํด์!
PR #6390 ์ด์์ ์ด์์ต๋๋ค. PR์ ์์ฑํ ์ ์๋๋ก ์ผ๋ถ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ๊ธฐ ์ํด .js ํ์ผ์ ์ด๋ฆ์ .ts๋ก ๋ณ๊ฒฝํ์ต๋๋ค. ์ด๋ฒ ์ฃผ๋ง์ ์ค์ ๋ณํ์ ์๋ํด ๋ณด๊ฒ ์ต๋๋ค.
Text ํจํค์ง๋ฅผ TypeScript๋ก ๋ณํํ๋ ๋์ ๊ฒช์๋ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ์ฌํญ:
๊ทธ๋์ TypeScript ์์ฑ์ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. TypeScript๋ ์์ฑ getter ๋ฐ setter์ ๋ํด ๋ค๋ฅธ ์ ํ์ ์ง์ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค: https://github.com/microsoft/TypeScript/issues/2521
Text ๋ฐ TextStyle ํด๋์ค์๋ ์ด๊ฒ์ด ํฐ ์ด์ ์ด ๋ ๋ถ๋ถ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด TextStyle์ fillStyle
๋ฐ stroke
๋ ์ซ์๋ฅผ ๋ฐ์๋ค์ธ ๋ค์ ๋ฌธ์์ด๋ก ๋ณํ๋๋ฏ๋ก getter๋ ์ซ์๊ฐ ์๋ ๊ณต์ฉ์ฒด ์ ํ์ ๋ฐํํ์ง ์์์ผ ํฉ๋๋ค. ์ด์ ์ซ์๊ฐ ์๋ ๊ณต์ฉ์ฒด ์ ํ์ ๋ฐํํ๋ฏ๋ก CanvasRenderingContext2D fillStyle
์ ์ ๋ฌํ ์ ์๋๋ก ๋ณํํด์ผ ํฉ๋๋ค.
๋ํ Text ํด๋์ค ์์ฒด๋ new TextStyle
๋๋ TextStyle์ ์ธ์คํด์ค์ ์ง์ ์ ๋ฌ๋๋ ํ
์คํธ ์คํ์ผ์ ๊ฐ์ฒด๋ฅผ ํ์ฉํฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ๊ธฐ์์ getter๋ ํญ์ TextStyle ์ธ์คํด์ค๋ฅผ ๋ฐํํ์ง๋ง setter์ ๋์ผํ ๊ณต์ฉ์ฒด ์ ํ์ผ๋ก ์
๋ ฅํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ฌ์ฉ์ ์์ญ์์ ์ผ๋ถ ๋ถํ์ํ ์ ํ ๊ฒ์ฌ(๋๋ ์บ์คํธ)๊ฐ TextStyle์ ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์๊ฒ ๋ฉ๋๋ค.
์ฅ๊ธฐ์ ์ผ๋ก ์ด ๋ฌธ์ ์ ๋ํ ์ต์ ์ ํด๊ฒฐ์ฑ ์ด ๋ฌด์์ธ์ง๋ ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ง๊ธ์ผ๋ก์๋ ๊ทธ๋ ๊ฒ ํด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
๋ค๋ฅธ ์ ํ์ ๋ก์ปฌ ๋ณ์๋ฅผ ์ฌ์ฌ์ฉํ๋ ์ฝ๋๊ฐ ์๋นํ ๋ง๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์๊ณ TypeScript์์๋ ์ ์๋ํ์ง ์์ต๋๋ค. ๊ธฐ์กด ์ฝ๋๋ฅผ ๋๋ฌด ๋ง์ง๊ณ ์ถ์ง ์์๊ธฐ ๋๋ฌธ์ ์ ๋์จ ์ ํ๊ณผ ์ฌ๊ธฐ ์ ๊ธฐ์ ์ถ์ ํ ์บ์คํ ์ ์ฌ์ฉํ์ฌ ์ปดํ์ผํ๋๋ก ํ์ต๋๋ค. ๊ทธ๋ฐ ๊ฒ๋ค์ ์๊ฐ์ด ์ง๋๋ฉด์ ๋ณด์ด์ค์นด์ฐํธ ์์น ์ผ๋ก ๊ฐ์ ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@qtiki
PR ๋์ ์ด ์ฃผ์ ์ ๋ฌธ์ ๋ฅผ ์ฐ๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
@qtiki
PR ๋์ ์ด ์ฃผ์ ์ ๋ฌธ์ ๋ฅผ ์ฐ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๋๋ ์ด๊ฒ์ด ์ฌ๋๋ค์ด TypeScript ๋ณํ๊ณผ ํจ๊ป ํ ์คํธ ํจํค์ง ํน์ ๋ฌธ์ ๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ๊ณณ์์ ๊ฒช์ ์ผ๋ฐ์ ์ธ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์์ฑ ๋ฌธ์ ๋ ์ฌ๋ฐ๋ฅด๊ฒ ์ ๋ ฅํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ฏธ๋์ ๋ํ ๊ทผ๋ณธ์ ์ธ ์ค๊ณ ๋ฌธ์ ์ ๋๋ค.
TypeScript setter ๋ฐ getter๊ฐ ๋ฐ์ํ ์ดํ๋ก ๋ค๋ฅธ ์ ํ์ ์ฌ์ฉํ ์ ์๋ ๋ฌธ์ ๋ฅผ ์ฐ๊ตฌํด ์์ต๋๋ค. ๋ฌธ์ ๋ ๋งค์ฐ ๋ณต์กํ ๋ฌธ์ ์ด๋ฉฐ "์์ "๋์ง ์์ ์๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ์ ํ์ ์์ฑ์ TypeScript๋ก ๋ณํํ๋ ์ผ๋ฐ์ ์ธ ์ง์นจ์ ๋ํ ์ ์ ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฒ์ ๋จ์ํ๋ ์์
๋๋ค. string | number
๋ฅผ ํ์ฉํ์ง๋ง ๋ด๋ถ์ ์ผ๋ก string
๋ก ์ ์ฅ๋๊ณ ๋ฐํ๋๋ ์์ฑ์
๋๋ค. ๋น์ฐํ ์์ฑ์ string | number
๋ก ๋ฐํํ ์ ์์ง๋ง ์ด๋ API ์ฌ์ฉ์๊ฐ ์์ ํ ๋ถํ์ํ ์ ํ ๊ฒ์ฌ์ ์ง๋ฉดํ๊ฒ ๋จ์ ์๋ฏธํฉ๋๋ค.
class Foo {
constructor() {
this._bar = '';
}
// error: 'get' and 'set' accessor must have the same type.(2380)
get bar(): string {
return this._bar;
}
// error: 'get' and 'set' accessor must have the same type.(2380)
set bar(value: string | number) {
this._bar = value.toString();
}
private _bar: string;
}
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
class Foo {
constructor() {
this._bar = '';
}
// Return the strictest type possible in the getter.
get bar(): string {
return this._bar;
}
// Use the same strict type for the setter as the getter.
set bar(value: string) {
// Call the conversion function.
this.setBar(value);
}
// Implement a separate conversion function that accepts all supported types.
public setBar(value: number | string) {
this._bar = value.toString();
}
private _bar: string;
}
์ด๋ ๊ฒ ํ๋ฉด ์ฌ์ฉ์๊ฐ ์์ฑ์ ์ฝ์ ๋ ์ฌ๋ฐ๋ฅธ ์ ํ์ ์ป์ ์ ์์ต๋๋ค. number
๋ฅผ bar
์ ํ ๋นํ๋ ค๋ TypeScript ์ฌ์ฉ์๋ setBar
๋ณํ ํจ์๋ฅผ ํธ์ถํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ์์ฑ setter๊ฐ ๋ณํ ํจ์๋ฅผ ํธ์ถํ๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด JavaScript ์ฌ์ฉ์์ ๋ํ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋๋๋ค. ์ด๋ ์ ํ์ด ์ง์ ๋์ง ์์ ์์ฑ setter๊ฐ ์ค์ ๋ก ์ซ์๋ฅผ ํ์ฉํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ฌ๋ฌ๋ถ์ ์ด๋ป๊ฒ ์๊ฐํ์ธ์? ์ด๊ฒ ๋ง์ด ๋๋์? ์ด ์ ํ์ ํจํด์ด ์ผ๋ง๋ ์์ฃผ ์ฌ์ฉ๋๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ ์ด๋ ํ ์คํธ ํจํค์ง์์ ๋ ๋ฒ ์ด์ ๋ง๋ฌ์ต๋๋ค.
๋๋ ํ์ดํ ์ ํ์ ์์ฉํ๊ธฐ ์ํด API๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์ซ์ดํ์ง๋ง ๋์๊ฒ ์ณ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ฐ์ธ์ ์ผ๋ก ๋๋ ์ฐจ๋ผ๋ฆฌ ์๋ฌด๊ฑฐ๋ ์ฌ์ฉํ๊ณ ์๋ก์ด ๋ฐฉ๋ฒ์ ๋ง๋ค๊ณ ์ถ์ต๋๋ค. ์ด๋ ๊ฒ ํฐ API ํ๋ฉด์ ๊ฐ๋ ๊ฒ์ ์ด๋ฏธ ๋ถ๋ด์ ๋๋ค.
๋๋ set* ๋ฐฉ๋ฒ์ผ๋ก ํดํน์ ์น์ธํ์ง ์์ ๊ฒ์ด๋ฉฐ any
์ ํ์ด set*
๋ฐฉ๋ฒ๋ณด๋ค ๋ ์น์ํ๋ค๋ @bigtimebuddy ์ ์๊ฒฌ์ ๋์ํฉ๋๋ค.
ํ์ฌ์ ๊ฒฝ์ฐ getter์ ๋ํด (string | number)
์ ํ์ ๋ฐํํ๋ ๊ฒ์ด ์๋นํ ํ์ฉ๋ฉ๋๋ค.
์ค์ ๋ก setBar
๋ set
์ ์์ ๋ฌธ์ ๋๋ฌธ์ ์ข์ ์๊ฐ์ด์ง๋ง _$setBar()
์ ๊ฐ์ด prefx์ ๋ ๋ง์ ๊ธฐํธ๊ฐ ํ์ํฉ๋๋ค. :) ํ์ง๋ง ์ด ๊ฒฝ์ฐ์๋ ๊ทธ๋ ์ง ์์ต๋๋ค.
@qtiki ๋ฌธ์ ๋ฅผ ๊ฐ์กฐํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ ์์ ํ๋ก์ ํธ๋ฅผ ์ํด pixijs ts fork๋ฅผ ๋ง๋ค ๋ ์ฌ๋ฌ ๋ฒ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์, Text
๋ ๊ณ ํต์
๋๋ค. ์, ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ํด ๋ ์๊ฐํด์ผ ํฉ๋๋ค.
setBar
๊ฐ ๊ฐ์ฅ ์ข์ ์๋ฃจ์
์ด ์๋๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค. ์์งํ ๋งํด์ TypeScript๊ฐ type-coercion๊ณผ ํจ๊ป ์ด๋ฌํ ์ข
๋ฅ์ setter๋ฅผ ์ง์ํ์ง ์๋๋ค๋ ์ฌ์ค์ ์๋นํ ๋๋์ต๋๋ค. TypeScript์ ํ๋ฆ ์ ์ด์ ๊ด๋ จํ์ฌ ์ด๋ฌํ ์์ฑ์ ๋ํด ๋ ๋์จํ ํ์ดํ ๋๋ any
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ฏธํ๋ ๋ฐ๋ ๊ฒฝ๊ณ ์
๋๋ค.
class Foo {
constructor() {
this._bar = '';
}
get bar(): string | number {
return this._bar;
}
set bar(value: string | number) {
this._bar = value.toString();
}
private _bar: string;
}
const foo = new Foo();
// TypeScript's flow control will assume from now on that `bar` is a `number`
foo.bar = 42;
function add(a: number, b: number) {
return a + b;
}
// Call to `add` shouldn't be allowed since the value in `bar` is actually a string
// This will print `4242` instead of `84`
console.log(add(foo.bar, 42));
์ฅ๊ธฐ์ ์ผ๋ก ๊ฐ์ฅ ๊นจ๋ํ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
class Bar {
constructor() {
this._bar = '';
}
get(): string {
return this._bar;
}
set(value: string | number) {
this._bar = value.toString();
}
private _bar: string;
}
class Foo {
constructor() {
this.bar = new Bar();
}
public bar: Bar;
}
const foo = new Foo();
foo.bar.set(42);
console.log(foo.bar.get());
์ด๋ฌํ ์ ํ์ set
๋ PIXI.Point
๊ฐ ๊ตฌํ๋๋ ๋ฐฉ์์ด๋ฏ๋ก ์ ๋ก๊ฐ ์๋ ๊ฒ์ ์๋๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ์ฌ์ฉ์ ๋๋ฉด API๋ ๋ชจ๋ ๊ณณ์์ ์๋์ผ๋ก get
๋ฅผ ํธ์ถํ์ง ์๊ณ ๋ Bar
์ธ์คํด์ค๋ฅผ "์๋ ๊ทธ๋๋ก" ๋ฐ์๋ค์ผ ๊ฒ์
๋๋ค.
๋น์ฐํ ์ด๊ฒ์ ํ๊ธฐ์ ์ธ ๋ณํ๊ฐ ๋ ๊ฒ์ด๋ฏ๋ก ๊ฐ๊น์ด ์ฅ๋์ ๋ํ ๊ฒ์ด ์๋๋ผ ๊ทธ๋ฅ 2์ผํธ๋ฅผ ๋ฃ๊ณ ์ถ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ๋ ์ด์ ์ ์์ด ๋ ์ด์ "์ค์ " ์์ฑ์ด ์๋๋ฏ Object.assign
์ ๊ฐ์ ๊ฒ๋ค์ด ๋ ์ด์ setter์์ ์๋ํ์ง ์๋๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ๊ทธ๋์ ๊ฒฐ๊ตญ ์ต๊ณ ์ ์์ด๋์ด๊ฐ ์๋ ์๋ ์์ต๋๋ค.
์๋ ํ์ธ์, ์ ๋ ์ค๋ซ๋์ PixiJS ์ฌ์ฉ์์ด์ Typescript ์ฌ์ฉ์์ ๋๋ค. ๋๋ ์ด๊ฒ์ ๊ธฐ์ฌํ ์ ์์ ๊ฒ์ ๋๋ค - ์ด ์์ ์์ ๋๋ถ๋ถ์ ํจํค์ง๊ฐ ์๋ฃ๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. ์บ๋ฒ์ค๋ฅผ ์ ์ธํ๊ณ . ๋ด๊ฐ ๋์ธ ์ ์๋ ๊ฒ์ด ์์ต๋๊น?
@lloydevans ๋ค!!! ์ค๋น ๋๋ ํ ์คํธ ๋นํธ๋งต์ ํ๊ณ ์ถ์ผ์ญ๋๊น? ๋ ๋ค ๋งค์ฐ ๋ณต์กํ ํจํค์ง๊ฐ ์๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@bigtimebuddy ํ ์คํธ ๋นํธ๋งต ์์ ์ ๋ณผ ์ ์์ต๋๋ค.
์ข์ ์๋ฆฌ! ์์ํ๋ฉด ์ฌ๊ธฐ์์ ์ถ์ ํ ์ ์๋๋ก PR ์ด์์ ์์ฑํ์ญ์์ค.
์์์ด ํ ๊ฒ. ๊ธฐ์กด ์ ํ ๋ฐ PR ์ค ์ผ๋ถ๋ฅผ ์ง๊ธ ์ดํด๋ณด๊ณ ๊ทธ์ ๋ฐ๋ฅผ ๊ฒ์ ๋๋ค.
npm์ ๊ฐ๋ณ ํจํค์ง์๋ ์ฌ์ ํ ์ ํ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ํ์ ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ ํ ์์ ์ฑ์ ํฌ์ํ์ง ์๊ณ ๋น๋ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
๋ชจ๋ ํ ์คํธ๋ ์น! ํจํค์ง๊ฐ ๋ช ๊ฐ ๋จ์ง ์์์ต๋๋ค!
@Zyie , @ivanpopelyshev , @SerG-Y, @eXponenta ๋ฐ ์ด ๋ง์ด๊ทธ๋ ์ด์ ์ ๊ฐ๋ฅํ๊ฒ ํด์ค ๋ค๋ฅธ ๋ชจ๋ ๊ธฐ์ฌ์์๊ฒ ํฐ ๊ฐ์ฌ๋ฅผ ๋๋ฆฝ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ ํ์ดํ ์ ํ์ ์์ฉํ๊ธฐ ์ํด API๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์ซ์ดํ์ง๋ง ๋์๊ฒ ์ณ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ฐ์ธ์ ์ผ๋ก ๋๋ ์ฐจ๋ผ๋ฆฌ ์๋ฌด๊ฑฐ๋ ์ฌ์ฉํ๊ณ ์๋ก์ด ๋ฐฉ๋ฒ์ ๋ง๋ค๊ณ ์ถ์ต๋๋ค. ์ด๋ ๊ฒ ํฐ API ํ๋ฉด์ ๊ฐ๋ ๊ฒ์ ์ด๋ฏธ ๋ถ๋ด์ ๋๋ค.