å
責äºé
ïŒã¯ãªãã¯ãã€ãã§æãŸã£ãã æããã«ãTDDã¯ãšã©ãŒãšåŒã°ããããšã¯ãããŸãããã...
å
容
ãšã³ããªãŒ
ç§ã®ãã£ãªã¢ã®æåã®6幎éãç§ã¯ããªãŒã©ã³ã¹ã§ãå°ããªã¹ã¿ãŒãã¢ããã®äººçã®åæ段éã«åå ããŸããã ãããã®ãããžã§ã¯ãã«ã¯ãã¹ãããããŸããã§ãã...æ¬åœã«ãåäžã®ãã¹ãã§ã¯ãããŸããã
ãããã®æ¡ä»¶ã§ã¯ã æšæ¥ã®æ©èœãå®è£
ããå¿
èŠããããŸãã åžå Žã®éèŠã¯åžžã«å€åããŠããããããã¹ãã¯çµäºããåã«å»æ¢ãããŸãã ãããŠããããã®ãã¹ãã§ããããäœæããããã®ãæ£ç¢ºã«ããã£ãŠããå Žåã«ã®ã¿äœæã§ããŸãããããã¯å¿
ãããããã§ã¯ãããŸããã RïŒDãè¡ããšããæçµçµæãã©ãããã¹ããåãããªãå ŽåããããŸãã ãŸããç¹å®ã®æåãéæãããšããŠããææ¥åžå ŽïŒããã³ããã«ãã£ãŠèŠä»¶ïŒãå€ãããªãããšã確信ããããšã¯ã§ããŸããã äžè¬ã«ããã¹ãæéãç¯çŽããããžãã¹äžã®çç±ããããŸãã
ç§ãã¡ã®æ¥çã¯åãªãã¹ã¿ãŒãã¢ããã§ã¯ãªãããšã«åæããŸãã
çŽ2幎åãç§ã¯ããããèŠæš¡ã®ã¯ã©ã€ã¢ã³ãã«ãµãŒãã¹ãæäŸããããªã倧èŠæš¡ãªã¢ãŠããœãŒã·ã³ã°äŒç€Ÿã«å°±è·ããŸããã
ãããã³/å«ç
宀ã§ã®äŒè©±ã®äžã§ããŠããããã¹ããšTDDãäžçš®ã®ãã¹ããã©ã¯ãã£ã¹ã§ããããšã«ã»ãŒå
šå¡ãåæããããšãããããŸããã ããããç§ãåå ãããã®äŒç€Ÿã®ãã¹ãŠã®ãããžã§ã¯ãã§ã¯ããã¹ãã¯ãããŸããã§ããã ããããç§ã¯ãã®æ±ºå®ãããŸããã§ããã ãã¡ãããåªãããã¹ãã«ãã¬ããžãæã€ãããžã§ã¯ãããããŸããããããã¯éåžžã«å®ååãããŠããŸãã
ããã§åé¡ã¯äœã§ããïŒ
ãªãTDDãåªããŠãããšèª°ããåæããã®ã«ãã ããããã䜿çšããããªãã®ã§ãã
ãã¶ãTDDã¯ééã£ãŠããŸããïŒ -ããïŒ
ããããããžãã¹äžã®å©ç¹ã¯ãããŸãããïŒ -ãããŠåã³ããããïŒ
ãã¶ãéçºè
ã¯æ ãè
ã§ããïŒ -ã¯ãïŒ ãããããããçç±ã§ã¯ãããŸããã
åé¡ã¯ãã¹ãèªäœã«ãããŸãïŒ
ããã¯å¥åŠã«èããããããããŸããããããã蚌æããããšããŸãã
ãã¹ããåé¡ã§ãïŒ
ãã®èª¿æ»ã«åºã¥ããšããšã³ã·ã¹ãã å
šäœã§æå°ã®å
šäœçãªæºè¶³åºŠã¯
å±ã
ã 2016幎ãš2017幎ã§ããã 以åã®ç 究ã¯èŠã€ãããŸããã§ããããããã¯ããŸãéèŠã§ã¯ãããŸããã
ã¡ãã£ãšããæŽå²
2008 幎ã«ãæåã®JSãã¹ããã¬ãŒã ã¯ãŒã¯ïŒ QUnit ïŒã®1ã€ããªãªãŒã¹ãããŸããã
ãžã£ã¹ãã³ã¯2010幎ã«ç»å ŽããŸããã
2011 幎 - ã¢ã« ã
ç§ãèŠã€ããæåã®JestãªãªãŒã¹ã¯2014幎ã§ããã

æ¯èŒã®ããã
Angular.js㯠2010幎㫠ãªãªãŒã¹ãããŸããã
ãšã³ããŒã¯2011幎ã«ç»å ŽããŸããã
React - 2013 ã
ãªã©...
ãã®èšäºã®å·çæç¹ã§ã¯ãJSãã¬ãŒã ã¯ãŒã¯ã¯äœæãããŠããŸãã...
ãšã«ãããç§ã«ãã£ãŠã

åãæéã«ã ããªã声 ããããŠããããé³ã®äžæãšäžéãç®ã«ããŸããããã®åŸã npmã¹ã¯ãªããã®ãã«ãã¯ãŒãå®æããå®å®ããwebpackãªãªãŒã¹ããªãªãŒã¹ãããŸãã ã

éå»10幎éã§ãã¹ãŠãå€åããŸããã ãã¹ããé€ããã¹ãŠã
å°ãã¹ã
ããªãã®ç¥èããã¹ãããŸãããã ãããã®ã©ã€ãã©ãª/ãã¬ãŒã ã¯ãŒã¯ã¯äœã§ããïŒ
1ïŒ
var hiddenBox = $("#banner-message"); $("#button-container button").on("click", function(event) { hiddenBox.show(); });
2ïŒ
@Component() export class HeroesComponent; constructor() }
3ïŒ
function Avatar(props) { return ( <img className="Avatar" src={props.user.avatarUrl} alt={props.user.name} /> ); }
åçïŒ
- JQuery
- Angular2 +
- åå¿ãã
ããã ããªãã®çãã¯ãã¹ãŠæ£ããã£ããšç¢ºä¿¡ããŠããŸãã ãããããããã®ãã¹ããã¬ãŒã ã¯ãŒã¯ã¯ã©ãã§ããããã
1ïŒ
var assert = require('assert'); describe('Array', function() { describe('#indexOf()', function() { it('should return -1 when the value is not present', function() { assert.equal([1,2,3].indexOf(4), -1); }); }); });
2ïŒ
const sum = require('./sum'); test('adds 1 + 2 to equal 3', () => { expect(sum(1, 2)).toBe(3); });
3ïŒ
test('timing test', function (t) { t.plan(2); t.equal(typeof Date.now, 'function'); var start = Date.now(); setTimeout(function () { t.equal(Date.now() - start, 100); }, 100); });
4ïŒ
let When2IsAddedTo2Expect4 = Assert.AreEqual(4, 2+2)
åçïŒ
- ã¢ã«
- ãžã§ã¹ã
- ããŒã
- FïŒã®ãã¹ã
ãããã®ããã€ããæšæž¬ãããããããŸããããäžè¬ã«ããããã¯ãã¹ãŠéåžžã«ãã䌌ãŠããŸãã èšèªãå€æŽããŠããã»ãšãã©å€æŽãããªãããšã«æ³šæããŠãã ããã
JavaScriptã®äžçã§å°ãªããšã8幎ã®åäœãã¹ãã®çµéšããããŸãã
ãããããã®æç¹ã§æ¢åã®ãã®ãåçŽã«é©åãããŸããã ç§ãã¡ãç¥ã£ãŠããããã«ãåäœãã¹ãã¯ã¯ããã«æ©ãçŸããŸããã Test Anything Protocol ïŒ1987ïŒã®ãªãªãŒã¹ãåºæºç¹ãšãããšãçŸåšã®ã¢ãããŒããçŸåšãããé·ã䜿çšããŸãã
TDD㯠ã å€ããã®ã§ ã¯ãªãã«ããŠããããã»ã©è¥ããã®ã§ã¯ãããŸããã ããããã¹ãŠãããã¹ãŠã®é·æãšçæã客芳çã«è©äŸ¡ã§ãããšããäºå®ã«ã€ãªãããŸãã
TDDã¬ãã¥ãŒ
TDDãšã¯äœããæãåºããŸãããã
ãã¹ãã«ããéçºïŒè±èªã®ãã¹ãé§åéçºã TDD ïŒã¯ãéåžžã«çãéçºãµã€ã¯ã«ã®ç¹°ãè¿ãã«åºã¥ããœãããŠã§ã¢éçºææ³ã§ãããŸããç®çã®å€æŽãã«ããŒãããã¹ããäœæãã次ã«ãã¹ãããã¹ããã³ãŒããäœæããæçµçã«ãªãã¡ã¯ã¿ãªã³ã°ãå®è¡ããŸããé¢é£ããæšæºã«å¯Ÿããæ°ããã³ãŒãã ïŒcïŒ ãŠã£ãããã£ã¢

ããããããã¯ç§ãã¡ã«äœãäžããŸããïŒ
ããã¯éšåçã«ããåœãŠã¯ãŸããŸããã
TDDã®å®è·µã¯1999幎ã«ã±ã³ãããã¯ã«ãã£ãŠãåçºæããããŸãããã ã¢ãžã£ã€ã«ãããã§ã¹ãã¯ããã2幎åŸïŒ2001幎ïŒã«æ¡çšãããŸããã TDDã¯ã«ã¹ã±ãŒãã¢ãã«ã®é»éæ代ã«çãŸãããã®äºå®ãTDDãèšèšãããæãæå©ãªæ¡ä»¶ãšããã»ã¹ã決å®ããããšãç解ã§ããããã«ãããã匷調ããå¿
èŠããããŸãã æããã«ãTDDã¯ãããã®æ¡ä»¶äžã§æé©ã«æ©èœããŸãã
ãããã£ãŠã次ã®ãããªãããžã§ã¯ãã§äœæ¥ããŠããå ŽåïŒ
- èŠä»¶ã¯æ確ã§ãã
- ããªãã¯ããããå®å
šã«ç解ããŠããŸãã
- ãããã¯å®å®ããŠãããé »ç¹ã«å€æŽãããããšã¯ãããŸããã
èŠä»¶ã®åœ¢åŒåãšããŠãã¹ããäœæã§ããŸãã
ãã ãã æ¢åã®ãã¹ããåãæ¹æ³ã§äœ¿çšããã«ã¯ã次ã®ç¹ãæºããå¿
èŠããããŸãã
- ãã¹ãã«ãšã©ãŒã¯ãããŸããã
- ãããã¯é¢é£ããŠããŸãã
- ãŸããã»ãšãã©ãã¹ãŠã®ãŠãŒã¹ã±ãŒã¹ãã«ããŒããŠããŸãïŒã³ãŒãã«ãã¬ããžãšæ··åããªãã§ãã ããïŒã
ãããã£ãŠã ããã¹ãã¯åœ¢åŒåãããèŠä»¶ãã¯ãããŠã©ãŒã¿ãŒãã©ãŒã«ã¢ãã«ããŸãã¯ã顧客ããç§åŠè
ããã³ãšã³ãžãã¢ã§ããNASAãããžã§ã¯ãã®ããã«ãéçºèªäœã®åã«ãããã®èŠä»¶ãååšããå Žåã«ã®ã¿åœãŠã¯ãŸããŸãã
ç¹å®ã®æ¡ä»¶äžã§ã¯ãããã¯ã¢ãžã£ã€ã«ããã»ã¹ã§æ©èœããŸãã ç¹ã«BDDã®ãããªãã®ã䜿çšãããå Žåãããã¯ãŸã£ããå¥ã®è©±ã§ãã
TDDã¯åªããã¢ãŒããã¯ãã£ã奚å±ããŸã
ãŸããããã¯éšåçã«ããåœãŠã¯ãŸããŸããã
TDDã¯ã¢ãžã¥ãŒã«æ§ãæšå¥šããŸããããã¯å¿
èŠã§ãããåªããã¢ãŒããã¯ãã£ã«ã¯ååã§ã¯ãããŸããã
ã¢ãŒããã¯ãã£ã®å質ã¯éçºè
ã«äŸåããŸãã çµéšè±å¯ãªéçºè
ã¯ãåäœãã¹ãã䜿çšããŠã䜿çšããªããŠããåªããã³ãŒããäœæã§ããŸãã
äžæ¹ã貧匱ãªéçºè
ã¯ãäœå質ã®ãã¹ãã§èŠãããäœå質ã®ã³ãŒããäœæããŸããåªãããã¹ããäœæããããšã¯ãããã°ã©ãã³ã°ãã®ãã®ã§ãããšåæã«äžçš®ã®èžè¡ã§ããããã§ãã
ãã¡ããããã¹ãã¯ã»ãã¯ã¹ã®ãããªãã®ã§ãããæé«ã¯æªãããšããæªãããšã§ããã ããã...
ãã®ãã¹ãã§ã¯ãåªããã·ã¹ãã èšèšã«é²ãããšã¯ã§ããŸããã
import { inject, TestBed } from '@angular/core/testing'; import { UploaderService } from './uploader.service'; describe('UploaderService', () => { beforeEach(() => { TestBed.configureTestingModule({ providers: [UploaderService], }); }); it('should be created', inject([UploaderService], (service: UploaderService) => { expect(service).toBeTruthy(); })); });
圌ã¯äœããã¹ãããªãããã§ãã
äœããã¹ãããªãããã«15è¡ã®ã³ãŒãã䜿çšããããšã«æ³šæããŠãã ããã
ãã ãããã®ãã¹ãã§ã¯ã·ã¹ãã èšèšãæ¹åãããããšã¯ãããŸããã
var IotSimulation = artifacts.require("./IotSimulation.sol"); var SmartAsset = artifacts.require("./SmartAsset.sol"); var BuySmartAsset = artifacts.require("./BuySmartAsset.sol"); var BigInt = require('big-integer'); contract('BuySmartAsset', function (accounts) { it("Should sell asset", async () => { var deliveryCity = "Lublin"; var extra = 1000;
ãã®ãã¹ãã®æ倧ã®åé¡ã¯å
ã®ã³ãŒãããŒã¹ã§ãããããã§ããæ¢ã«åäœããŠãããããžã§ã¯ãããªãã¡ã¯ã¿ãªã³ã°ããªããŠãã倧å¹
ã«æ¹åãããå¯èœæ§ããããŸãã
äžè¬ã«ãæçµçãªã¢ãŒããã¯ãã£ã«å¯ŸããTDDã®åœ±é¿ã¯ãéžæããã©ã€ãã©ãª/ãã¬ãŒã ã¯ãŒã¯ã®åœ±é¿ãšã»ãŒåãã¬ãã«ã«ãªããŸãïŒ å°ãªããšã ã Nest ã RxJs ãããã³MobXã¯ãç§ã®å人çãªæèŠã§ã¯ãã¯ããã«åŒ·ãå¹æããããŸãïŒã
ããããTDDããã¬ãŒã ã¯ãŒã¯ããæªãã³ãŒãã倱æããã¢ãŒããã¯ãã£ãœãªã¥ãŒã·ã§ã³ããããªããæãããšã¯ãããŸããã
ç¹å¹è¬ã¯ãããŸããã
TDDã¯æéãç¯çŽããŸã
ãããŠãããã¯ãã§ã«å€ãã®èŠå ã«äŸåããŠããŸã...
ãããä»®å®ããŸãããïŒ
- ãããžã§ã¯ãã®å
šå¡ããéžæãããã¹ãããŒã«ãTDDæ¹æ³è«ãããã³åäœãã¹ãã®ãã¹ããã©ã¯ãã£ã¹ã«ç²ŸéããŠããŸãã
- ãããŠã誰ããäžèšã®ãã¹ãŠãçããç解ããŠããŸãã
- ãŸããèŠä»¶ã¯éæã§å®å®ããŠããŸãã
- ããã«ãéçºããŒã ã¯ã補åææè
ããšåãæ¹æ³ã§ããããç解ããŸãã
- ãŸãã管çè
ã¯TDDã«ãã£ãŠåŒãèµ·ãããããã¹ãŠã®çµç¹ã®åé¡ïŒããšãã°ãæ°ããéçºè
ãããŒã ã«å°å
¥ããããã®ããé·ãããã»ã¹ïŒã解決ããæºåãã§ããŠããŸãã
ãã®å Žåã§ããæåã«æéãšåŽåãè²»ããå¿
èŠããããŸããããã«ãããåæéçºãã§ãŒãºãé·ããªãããã°ããããŠããããã°ã®ä¿®æ£ãšè£œåãµããŒãã«å¿
èŠãªæéãççž®ã§ããŸãã
ãã¡ããã2çªç®ã¯ã¹ã¿ãŒãã¢ããæè³ä»¥äžã®ãã®ãããããŸããããã®å ŽåãTDDã®å©ç¹ã¯æããã§ãã
ãŸãããã¹ãã§ã¯æå³ããªãå€æŽãããã«æ€åºããããããå Žåã«ãã£ãŠã¯ãæ°ããæ©èœã®å°å
¥ã«ãããæéãç¯çŽã§ããŸãã
ããããéåžžã«åçãªçŸå®ã®äžçã§ã¯ãèŠä»¶ã¯å€åããå¯èœæ§ãããã以åã¯æ£ããåäœã ã£ããã®ãæ£ãããªããªããŸãã ãã®å Žåãæ°ããçŸå®ã«é¢é£ããŠãã¹ããæžãçŽãå¿
èŠããããŸãã ãããŠãæããã«ãããã«å ±ãããªãæ°ããåªåãããŠãã ããã
ãã®ã¿ã€ãã®ãµã€ã¯ã«ã«å
¥ãããšããã§ããŸãïŒ

ããŠããã®ãµã€ã¯ã«ã¯TDDã®ååã«åããŠããŸãã ãããã以äžã¯ãã¯ããããŸããïŒ

ãããã®éèŠãªéããèŠã€ããŠã¿ãŠãã ããã
ãã¹ãã¯æé«ã®ããã¥ã¡ã³ãã§ãã
ãã 圌ãã¯ãããåŸæã§ãããééããªãæé«ã§ã¯ãããŸããã
è§åºŠã®ããã¥ã¡ã³ããèŠãŠã¿ãŸãããïŒ

ãŸãã¯åå¿ãã ïŒ

圌ãã«ã¯å
±éç¹ããããšæããŸããïŒ -ã©ã¡ããã³ãŒãäŸã«åºã¥ããŠããŸã ã ãããŠããã«ãã以äžã ãããã®äŸã¯ãã¹ãŠç°¡åã«å®è¡ã§ããŸãïŒangularã¯StackBlitzã䜿çšããreactã¯CodePenã䜿çšããŸã ïŒããã®ãããåºåã§äœãåŸãããäœããå€æŽããå Žåã«äœãèµ·ãããã確èªã§ããŸãã
ãã¡ããããã¬ãŒã³ããã¹ãããããŸãããã³ãŒãå
ã®ã³ã¡ã³ãã®ãããªãã®ã§ããã³ãŒãèªäœããäœããç解ããŠããªãå Žåã«ã®ã¿ã³ã¡ã³ããå¿
èŠã§ãã
å®è¡å¯èœãªã³ãŒãäŸ -ããã«æé«ã®ããã¥ã¡ã³ãããããŸãïŒ
ãã¹ãã¯ããã«è¿ãã§ãããååã§ã¯ãããŸããã
describe('ReactTypeScriptClass', function() { beforeEach(function() { container = document.createElement('div'); attachedListener = null; renderedName = null; }); it('preserves the name of the class for use in error messages', function() { expect(Empty.name).toBe('Empty'); }); it('throws if no render function is defined', function() { expect(() => expect(() => ReactDOM.render(React.createElement(Empty), container) ).toThrow() ).toWarnDev([
ããã¯ã reactã®å®éã®ãã¹ãããã®å°ããªæçã§ãã ã³ãŒãã®äŸã匷調衚瀺ã§ããŸãã
container = document.createElement('div'); Empty.name;
container = document.createElement('div'); ReactDOM.render(React.createElement(Empty), container);
ãã以å€ã¯ãã¹ãŠãææžãã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã³ãŒãã§ãã
æ£çŽã«èšã£ãŠãäžèšã®ãã¹ãäŸã¯å®éã®ããã¥ã¡ã³ããããã¯ããã«èªã¿ã«ããã§ãã ãããŠãåé¡ã¯ãã®ç¹å®ã®ãã¹ãã§ã¯ãããŸãã-ç§ã¯facebookã®äººãè¯ãã³ãŒããšè¯ããã¹ããæžãæ¹æ³ãç¥ã£ãŠãããšç¢ºä¿¡ããŠããŸã:)ãã¹ãããŒã«ãšãã®ãããªã¢ãµãŒã·ã§ã³ã©ã€ãã©ãªããã®ãã®ãã¹ãŠã®ãŽãã describe
ã test
ã to.be.true
ããªãã®ãã¹ãã
ã¡ãªã¿ã«ã equal
/ deepEqual
ã®ã¿ã䜿çšããŠãã¹ããæžãæããããšãã§ãããããæå°éã®APIãåããããŒããšåŒã°ããã©ã€ãã©ãªãããããããã®çšèªã§èããããšã¯äžè¬ã«åäœãã¹ãã®è¯ãç¿æ
£ã§ãã ãããã tape
ã®ãã¹ãã§ãããåã«å®è¡å¯èœãªã³ãŒããµã³ãã«ãšã¯éåžžã«ããé¢ããŠããŸã ã
ãããããã¹ããããã¥ã¡ã³ããšããŠã®äœ¿çšã«ãŸã éåžžã«é©ããŠããããšã¯æ³šç®ã«å€ããŸãã ãããã¯æ代é
ãã«ãªãå¯èœæ§ã¯æ¬åœã«äœããç§ãã¡ã®æèã¯ããããèªããšãã«åã«éå°ãæšãŠãŸãã ãã¹ããã©ã®ããã«å€åããããé ã®äžã§èŠèŠåããããšãããšã次ã®ããã«ãªããŸãã

ã芧ã®ãšãããããã¯ãã§ã«å
ã®ãã¹ããããå®éã®ããã¯ã«ã¯ããã«è¿ããã®ã§ãã
ããã€ãã®çµè«
- ãã¹ã㯠ãå®å®ããŠããå Žåã æ£åŒãªèŠä»¶ã§ãã
- éçºè
ã®ã¹ãã«ãååã§ããã°ã TDDã¯åªããã¢ãŒããã¯ãã£ãæšå¥šããŸãã
- TDDãæåã«æè³ããã°æéãç¯çŽã§ããŸãã
- ä»ã®å®è¡å¯èœãªã³ãŒãäŸããªãå Žåããã¹ãã¯æé«ã®ããã¥ã¡ã³ãã§ãã
TDDã¯ãŸã ééã£ãŠããŸããïŒ -ããããTDDã¯ééã£ãŠããŸããã
ããã¯æ£ããæ¹åãæã瀺ããéèŠãªè³ªåãæèµ·ããŸãã é©çšæ¹æ³ãèãçŽããŠå€æŽããã ãã§ãã
解決çã¯äœã§ããïŒ
TDDãç¹å¹è¬ãšããŠåãåããªãã§ãã ããã
ããšãã°ãã¢ãžã£ã€ã«ããã»ã¹ãšèŠãªããªãã§ãã ããã
代ããã«ããã®æ¬åœã®åŒ·ã¿ã«çŠç¹ãåœãŠãŸãïŒ
- æå³ããªãå€æŽã®é²æ¢ãèšãæãããšãæ¢åã®åäœãäžçš®ã®ãããŒã¹ã©ã€ã³ããšããŠä¿®æ£ããŸãïŒè±èªã®çšèªãããŒã¹ã©ã€ã³ãã¯äŸç¶ãšããŠæçšã§ãïŒã
- ããã¥ã¡ã³ãã®ãµã³ãã«ããã¹ããšããŠäœ¿çšããŸãã
åäœãã¹ããéçºè
ããŒã«ãšèããŠãã ããã ããšãã°ã ãªã³ã¿ãŒãã³ã³ãã€ã©ã®ããã«ã
ãªã³ã¿ãŒã䜿çšããèš±å¯ããããã¯ããªãŒããŒã«æ±ããããšã¯ãããŸããã䜿çšããã ãã§ãã
ãã€ãããã¯ãŠããããã¹ãã®çŸå®ã«ãªãã§ãããã TDDã«å¿
èŠãªåªåãã¿ã€ããŒãŸãã¯ãã³ãã©ãŒã䜿çšããã¬ãã«ã«ãããšãã ãã ãããããŸã§ã¯ã å®è¡å¯èœãªãµã³ãã«ã«ã§ããã ãè¿ããã¹ããäœæãããããããããžã§ã¯ãã®çŸåšã®ããŒã¹ã©ã€ã³ç¶æ
ãšããŠäœ¿çšããããšã§ãã³ã¹ããæå°éã«æããŸãã
人æ°ã®ããããŒã«ã®ã»ãšãã©ãä»ã®ç®çã®ããã«èšèšãããŠãããšããäºå®ãèãããšãããã¯é£ããããšã ãšç解ããŠããŸãã
確ãã«ãäžèšã®ãã¹ãŠã®åé¡ãèæ
®ããŠããã®ãããªãã®ãäœæããŸããã 圌ã¯åŒã°ããŸã

åºæ¬çãªæŠå¿µã¯éåžžã«åçŽã§ãã ã³ãŒããæžãïŒ
export function sampleFn(a: any, b: any) { return a + b + b + a; }
ãããŠãããªãã®ãã¹ãã§ããã䜿çšããŠãã ããïŒ
import { sampleFn } from './index'; export = { values: [ sampleFn(1, 1), sampleFn(1000000, 1000000), sampleFn('abc', 'cba'), sampleFn(1, 'abc'), sampleFn('abc', 1), new Promise(resolve => resolve(sampleFn('async value', 1))), ], };
泚ïŒãã¡ããããã¹ãã¯éåžžã«æš¡æ¬çãªãã®ã§ã-ãã¢çšã§ãã
次ã«ã baset test
ã³ãã³ããå®è¡ããŠãäžæçãªããŒã¹ã©ã€ã³ãååŸããŸãã
{ "values": [ 4, 4000000, "abccbacbaabc", "1abcabc1", "abc11abc", "async value11async value" ] }
å€ãæ£ããå Žåã baset accept
ãå®è¡ããäœæããããŒã¹ã©ã€ã³ããªããžããªã«ã³ãããããŸãã
ãã¹ãã®ä»¥éã®ãã¹ãŠã®å®è¡ã§ã¯ãæ¢åã®ããŒã¹ã©ã€ã³ããã¹ããããšã¯ã¹ããŒããããå€ãšæ¯èŒããŸãã ããããç°ãªãå Žåããã¹ãã¯å€±æã ãããã§ãªãå Žåãåæ ŒããŸãã
èŠä»¶ãå€æŽãããå Žåã¯ãã³ãŒããå€æŽãããã¹ããå®è¡ããŠæ°ããããŒã¹ã©ã€ã³ãåãå
¥ããŸã ã
ãã®ããŒã«ã¯ãæå°éã®åŽåã§ãäžæ³šæã«ããå€æŽããä¿è·ããŸãã å®è¡ããå¿
èŠãããã®ã¯ã å®è¡å¯èœãªã³ãŒããµã³ãã«ãäœæããããšã ãã§ã ãããã¯ãåªããããã¥ã¡ã³ãã®åºç€ã§ãã
ããã€ãã®äŸ
åå¿ã§äœ¿çšããŸãã ãã¹ãã¯æ¬¡ã®ãšããã§ãã
import * as React from 'react'; import { jsxFn } from './index'; export const value = ( <div> {jsxFn('s', 's')} {jsxFn('abc', 'cba')} {jsxFn('s', 'abc')} {jsxFn('abc', 's')} </div> );
ããŒã¹ã©ã€ã³ã®ãããª.md
ãã¡ã€ã«ãäœæããŸãïŒ
exports.value:
<div data-reactroot=""> <div class="cssCalss"> ss </div> <div class="cssCalss"> abccba </div> <div class="cssCalss"> sabc </div> <div class="cssCalss"> abcs </div> </div>
ãŸãã¯pixi.js㧠ïŒ
import 'pixi.js'; interface IResourceDictionary { [index: string]: PIXI.loaders.Resource; } const ASSETS = './assets/assets.json'; const RADAR_GREEN = 'Light_green'; const getSprite = async () => { await new Promise(resolve => PIXI.loader .add(ASSETS) .load(resolve)); return new PIXI.Sprite(PIXI.utils.TextureCache[RADAR_GREEN]); }; export const sprite = getSprite();
ãã®ãã¹ãã¯ã次ã®ãããªããŒã¹ã©ã€ã³ãäœæããŸãã
exports.sprite:

èšç»ã«ã€ããŠå°ã
ãã®ããŒã«ã¯ãŸã éçºã®éåžžã«åæã®æ®µéã«ãããããšãã°ã次ã®ãããªå€ãã®é©æ°ããŸã ãããšèšããªããã°ãªããŸããã
- ç£èŠ/ã¯ãŒã¯ãããŒã¢ãŒã
- TAPã®äºææ§
- Gitåãå
¥ãæŠç¥
- VSã³ãŒãæ¡åŒµ
- ...ããã³å°ãªããšã24人ã
èšç»ã®çŽ40ïŒ
ã®ã¿ãå®è£
ãããŸããã ãããããã¹ãŠã®åºæ¬æ©èœã¯ãã§ã«æ©èœããŠããã®ã§ãè©ŠããŠã¿ãŠãã ããã ãã¶ããããªãã¯ããã奜ãã§ãã誰ãç¥ã£ãŠããŸããïŒ