├── 3_8_vue_js ├── static │ └── .gitkeep ├── src │ ├── app.pug │ ├── assets │ │ └── logo.png │ ├── store │ │ ├── mutation-types.js │ │ ├── getters.js │ │ ├── mutations.js │ │ ├── index.js │ │ └── actions.js │ ├── components │ │ ├── Chat │ │ │ ├── index.vue │ │ │ ├── chat.pug │ │ │ ├── chat.js │ │ │ └── chat.css │ │ ├── MessageList │ │ │ ├── assets │ │ │ │ └── avatar.png │ │ │ ├── index.vue │ │ │ ├── message_list.html │ │ │ ├── message_list.js │ │ │ ├── message_list.css │ │ │ └── message_list.pug │ │ └── HelloWorld.vue │ ├── App.vue │ ├── router │ │ └── index.js │ └── main.js ├── config │ ├── prod.env.js │ ├── dev.env.js │ └── index.js ├── build │ ├── logo.png │ ├── vue-loader.conf.js │ ├── build.js │ ├── check-versions.js │ └── webpack.base.conf.js ├── .editorconfig ├── .gitignore ├── .babelrc ├── .postcssrc.js ├── index.html ├── README.md └── package.json ├── 3_7_angular ├── src │ ├── assets │ │ └── .gitkeep │ ├── app │ │ ├── app.component.css │ │ ├── channel │ │ │ ├── channel.component.css │ │ │ ├── channel.component.html │ │ │ ├── channel.component.ts │ │ │ └── channel.component.spec.ts │ │ ├── message-form │ │ │ ├── message-form.component.css │ │ │ ├── message-form.component.html │ │ │ ├── message-form.component.spec.ts │ │ │ └── message-form.component.ts │ │ ├── message-feed │ │ │ ├── message-feed.component.css │ │ │ ├── message-feed.component.html │ │ │ ├── message-feed.component.spec.ts │ │ │ └── message-feed.component.ts │ │ ├── shared │ │ │ └── models │ │ │ │ ├── user.ts │ │ │ │ └── message.ts │ │ ├── pipes │ │ │ ├── reverse.pipe.spec.ts │ │ │ └── reverse.pipe.ts │ │ ├── app.component.ts │ │ ├── app-routing.module.ts │ │ ├── services │ │ │ ├── message.service.spec.ts │ │ │ └── message.service.ts │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ └── app.module.ts │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── typings.d.ts │ ├── styles.css │ ├── tsconfig.app.json │ ├── index.html │ ├── tsconfig.spec.json │ ├── main.ts │ └── test.ts ├── e2e │ ├── app.po.ts │ ├── tsconfig.e2e.json │ └── app.e2e-spec.ts ├── .editorconfig ├── tsconfig.json ├── .gitignore ├── protractor.conf.js ├── karma.conf.js ├── README.md ├── .angular-cli.json └── package.json ├── 2_3_dev ├── .gitignore ├── src │ ├── js │ │ ├── hello.js │ │ └── app.js │ └── css │ │ └── style.css ├── dist │ └── css │ │ └── style.css ├── index.html ├── package.json ├── webpack.config.js └── README.md ├── 4_9_react_native ├── NewProject │ ├── .watchmanconfig │ ├── .gitattributes │ ├── .babelrc │ ├── app.json │ ├── android │ │ ├── settings.gradle │ │ ├── app │ │ │ ├── src │ │ │ │ └── main │ │ │ │ │ ├── res │ │ │ │ │ ├── values │ │ │ │ │ │ ├── strings.xml │ │ │ │ │ │ └── styles.xml │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ └── mipmap-xxhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── java │ │ │ │ │ └── com │ │ │ │ │ │ └── newproject │ │ │ │ │ │ ├── MainActivity.java │ │ │ │ │ │ └── MainApplication.java │ │ │ │ │ └── AndroidManifest.xml │ │ │ ├── BUCK │ │ │ └── proguard-rules.pro │ │ ├── keystores │ │ │ ├── debug.keystore.properties │ │ │ └── BUCK │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── build.gradle │ │ ├── gradle.properties │ │ └── gradlew.bat │ ├── rnchat.png │ ├── ios │ │ ├── NewProject │ │ │ ├── Images.xcassets │ │ │ │ ├── Contents.json │ │ │ │ └── AppIcon.appiconset │ │ │ │ │ └── Contents.json │ │ │ ├── AppDelegate.h │ │ │ ├── main.m │ │ │ ├── AppDelegate.m │ │ │ └── Info.plist │ │ ├── NewProjectTests │ │ │ ├── Info.plist │ │ │ └── NewProjectTests.m │ │ ├── NewProject-tvOSTests │ │ │ └── Info.plist │ │ └── NewProject-tvOS │ │ │ └── Info.plist │ ├── .buckconfig │ ├── flow_sample.js │ ├── index.js │ ├── __tests__ │ │ └── App.js │ ├── package.json │ ├── .gitignore │ ├── .flowconfig │ └── App.js ├── ReactNativeChat │ ├── .watchmanconfig │ ├── .gitattributes │ ├── .babelrc │ ├── android │ │ ├── settings.gradle │ │ ├── app │ │ │ ├── src │ │ │ │ └── main │ │ │ │ │ ├── res │ │ │ │ │ ├── values │ │ │ │ │ │ ├── strings.xml │ │ │ │ │ │ └── styles.xml │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ └── mipmap-xxhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── java │ │ │ │ │ └── com │ │ │ │ │ │ └── reactnativechat │ │ │ │ │ │ ├── MainActivity.java │ │ │ │ │ │ └── MainApplication.java │ │ │ │ │ └── AndroidManifest.xml │ │ │ ├── BUCK │ │ │ └── proguard-rules.pro │ │ ├── keystores │ │ │ ├── debug.keystore.properties │ │ │ └── BUCK │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ ├── gradle-wrapper.jar │ │ │ │ └── gradle-wrapper.properties │ │ ├── build.gradle │ │ ├── gradle.properties │ │ └── gradlew.bat │ ├── app.json │ ├── images │ │ ├── menu_icon.png │ │ └── avator_blank.png │ ├── ios │ │ ├── ReactNativeChat │ │ │ ├── Images.xcassets │ │ │ │ ├── Contents.json │ │ │ │ └── AppIcon.appiconset │ │ │ │ │ ├── Icon-40.png │ │ │ │ │ ├── Icon-58.png │ │ │ │ │ ├── Icon-60.png │ │ │ │ │ ├── Icon-80.png │ │ │ │ │ ├── Icon-87.png │ │ │ │ │ ├── Icon-1024.png │ │ │ │ │ ├── Icon-120.png │ │ │ │ │ ├── Icon-180.png │ │ │ │ │ ├── Icon-120-2.png │ │ │ │ │ └── Contents.json │ │ │ ├── AppDelegate.h │ │ │ ├── main.m │ │ │ ├── AppDelegate.m │ │ │ └── Info.plist │ │ ├── ReactNativeChatTests │ │ │ ├── Info.plist │ │ │ └── ReactNativeChatTests.m │ │ ├── ReactNativeChat-tvOSTests │ │ │ └── Info.plist │ │ └── ReactNativeChat-tvOS │ │ │ └── Info.plist │ ├── .buckconfig │ ├── index.js │ ├── __tests__ │ │ └── App.js │ ├── package.json │ ├── .gitignore │ ├── App.js │ └── .flowconfig ├── images │ ├── rnchat.png │ ├── menu_icon.png │ └── avator_blank.png └── README.md ├── 2_4_syntax ├── es2015 │ ├── 22_module │ │ ├── app2.js │ │ ├── app1.js │ │ ├── app3.js │ │ ├── main.js │ │ └── lib │ │ │ ├── person.js │ │ │ └── validations.js │ ├── 09_arrow_function.js │ ├── 08_arrow_function.js │ ├── 07_arrow_function.js │ ├── 02_block_scope.js │ ├── 05_default_argument.js │ ├── 10_arrow_function.js │ ├── 17_promise.js │ ├── 01_variable_define.js │ ├── 06_default_argument.js │ ├── 20_promise.js │ ├── 04_template_literal.js │ ├── 13_this_keyword.js │ ├── 14_class.js │ ├── 03_block_scope.js │ ├── 15_class.js │ ├── 11_this_keyword.js │ ├── 12_this_keyword.js │ ├── 19_promise.js │ ├── 18_promise.js │ ├── 16_class_inheritance.js │ └── 21_promise.js └── typescript │ ├── 21_generics.ts │ ├── 20_generics.ts │ ├── 12_interface.ts │ ├── 18_generics.ts │ ├── 19_generics.ts │ ├── 17_generics.ts │ ├── 09_type_annotation.ts │ ├── 11_interface.ts │ ├── 26_jsx.ts │ ├── 13_interface.ts │ ├── 25_jsx.ts │ ├── 24_decorator.ts │ ├── 05_type_annotation.ts │ ├── 04_type_annotation.ts │ ├── 01_hello.ts │ ├── 14_interface.ts │ ├── 03_type_assertion.ts │ ├── 06_type_annotation.ts │ ├── 02_variable.ts │ ├── 07_type_annotation.ts │ ├── 08_type_annotation.ts │ ├── 23_decorator.ts │ ├── 10_type_annotation.ts │ ├── 15_interface.ts │ ├── 22_generics.ts │ └── 16_class.ts ├── 3_6_react ├── src │ ├── containers │ │ ├── index.ts │ │ └── Channel.tsx │ ├── components │ │ ├── index.ts │ │ ├── ChannelList.tsx │ │ └── MessageForm.tsx │ ├── Routes.tsx │ └── client.ts ├── src_making │ ├── v0.3 │ │ ├── containers │ │ │ ├── index.ts │ │ │ └── Channel.tsx │ │ ├── components │ │ │ ├── index.ts │ │ │ └── MessageFeed.tsx │ │ ├── client.ts │ │ └── Routes.tsx │ ├── v0.4 │ │ ├── containers │ │ │ ├── index.ts │ │ │ └── Channel.tsx │ │ ├── components │ │ │ ├── index.ts │ │ │ └── MessageForm.tsx │ │ ├── Routes.tsx │ │ └── client.ts │ ├── v0.5 │ │ ├── containers │ │ │ ├── index.ts │ │ │ └── Channel.tsx │ │ ├── components │ │ │ ├── index.ts │ │ │ ├── MessageForm.tsx │ │ │ └── MessageFeed.tsx │ │ ├── Routes.tsx │ │ └── client.ts │ ├── v0.9 │ │ ├── containers │ │ │ ├── index.ts │ │ │ └── Channel.tsx │ │ ├── components │ │ │ ├── index.ts │ │ │ ├── ChannelList.tsx │ │ │ ├── MessageFeed.tsx │ │ │ └── MessageForm.tsx │ │ ├── Routes.tsx │ │ └── client.ts │ ├── v0.1 │ │ └── components │ │ │ ├── index.ts │ │ │ └── ChannelList.tsx │ └── v0.2 │ │ ├── components │ │ └── index.ts │ │ └── Routes.tsx ├── app-overview.png ├── dist │ ├── img │ │ └── avatar.png │ └── index.html ├── tsconfig.json ├── tslint.json ├── webpack.config.js ├── package.json └── README.md ├── public └── img │ ├── book.jpg │ ├── title_logo.png │ ├── book_thumbnail.png │ └── title_logo_small.png ├── 2_5_server ├── firebase.json ├── README.md ├── functions │ └── package.json └── public │ └── 404.html ├── .gitignore └── README.md /3_8_vue_js/static/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /3_7_angular/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /2_3_dev/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /3_7_angular/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /4_9_react_native/NewProject/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /3_8_vue_js/src/app.pug: -------------------------------------------------------------------------------- 1 | #app 2 | router-view 3 | -------------------------------------------------------------------------------- /4_9_react_native/ReactNativeChat/.watchmanconfig: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /4_9_react_native/NewProject/.gitattributes: -------------------------------------------------------------------------------- 1 | *.pbxproj -text 2 | -------------------------------------------------------------------------------- /2_4_syntax/es2015/22_module/app2.js: -------------------------------------------------------------------------------- 1 | import * from 'lib/validation'; -------------------------------------------------------------------------------- /3_6_react/src/containers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Channel'; 2 | -------------------------------------------------------------------------------- /4_9_react_native/ReactNativeChat/.gitattributes: -------------------------------------------------------------------------------- 1 | *.pbxproj -text 2 | -------------------------------------------------------------------------------- /2_4_syntax/es2015/09_arrow_function.js: -------------------------------------------------------------------------------- 1 | const add = (a, b) => a + b; 2 | -------------------------------------------------------------------------------- /2_4_syntax/typescript/21_generics.ts: -------------------------------------------------------------------------------- 1 | let output = identity(1); -------------------------------------------------------------------------------- /2_4_syntax/typescript/20_generics.ts: -------------------------------------------------------------------------------- 1 | let output = identity("taro"); -------------------------------------------------------------------------------- /3_6_react/src_making/v0.3/containers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Channel'; 2 | -------------------------------------------------------------------------------- /3_6_react/src_making/v0.4/containers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Channel'; 2 | -------------------------------------------------------------------------------- /3_6_react/src_making/v0.5/containers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Channel'; 2 | -------------------------------------------------------------------------------- /3_6_react/src_making/v0.9/containers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Channel'; 2 | -------------------------------------------------------------------------------- /3_6_react/src_making/v0.1/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ChannelList'; 2 | -------------------------------------------------------------------------------- /4_9_react_native/NewProject/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["react-native"] 3 | } 4 | -------------------------------------------------------------------------------- /4_9_react_native/ReactNativeChat/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["react-native"] 3 | } 4 | -------------------------------------------------------------------------------- /3_7_angular/src/app/channel/channel.component.css: -------------------------------------------------------------------------------- 1 | .channel { 2 | padding: 0 20px; 3 | } 4 | -------------------------------------------------------------------------------- /2_4_syntax/es2015/08_arrow_function.js: -------------------------------------------------------------------------------- 1 | const add = (a, b) => { 2 | return a + b; 3 | } 4 | -------------------------------------------------------------------------------- /2_4_syntax/es2015/22_module/app1.js: -------------------------------------------------------------------------------- 1 | import {max_length, validate_message} from 'lib/validation'; -------------------------------------------------------------------------------- /2_4_syntax/typescript/12_interface.ts: -------------------------------------------------------------------------------- 1 | let person = {id: 1, name: "太郎"}; 2 | printName(person); 3 | -------------------------------------------------------------------------------- /public/img/book.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/okachijs/jsframeworkbook/HEAD/public/img/book.jpg -------------------------------------------------------------------------------- /2_4_syntax/es2015/07_arrow_function.js: -------------------------------------------------------------------------------- 1 | const add = function (a, b) { 2 | return a + b; 3 | } 4 | -------------------------------------------------------------------------------- /2_4_syntax/typescript/18_generics.ts: -------------------------------------------------------------------------------- 1 | function identity(arg: any): any { 2 | return arg; 3 | } 4 | -------------------------------------------------------------------------------- /2_4_syntax/typescript/19_generics.ts: -------------------------------------------------------------------------------- 1 | function identity(arg: T): T { 2 | return arg; 3 | } 4 | -------------------------------------------------------------------------------- /3_6_react/src_making/v0.2/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from '../../v0.1/components/ChannelList'; 2 | -------------------------------------------------------------------------------- /2_3_dev/src/js/hello.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | console.log('Hello Frontend Engineer!') 3 | } -------------------------------------------------------------------------------- /2_4_syntax/typescript/17_generics.ts: -------------------------------------------------------------------------------- 1 | function identity(arg: number): number { 2 | return arg; 3 | } 4 | -------------------------------------------------------------------------------- /3_8_vue_js/config/prod.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | module.exports = { 3 | NODE_ENV: '"production"' 4 | } 5 | -------------------------------------------------------------------------------- /4_9_react_native/NewProject/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "NewProject", 3 | "displayName": "NewProject" 4 | } -------------------------------------------------------------------------------- /3_6_react/app-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/okachijs/jsframeworkbook/HEAD/3_6_react/app-overview.png -------------------------------------------------------------------------------- /3_7_angular/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /3_8_vue_js/build/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/okachijs/jsframeworkbook/HEAD/3_8_vue_js/build/logo.png -------------------------------------------------------------------------------- /4_9_react_native/NewProject/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'NewProject' 2 | 3 | include ':app' 4 | -------------------------------------------------------------------------------- /public/img/title_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/okachijs/jsframeworkbook/HEAD/public/img/title_logo.png -------------------------------------------------------------------------------- /3_6_react/dist/img/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/okachijs/jsframeworkbook/HEAD/3_6_react/dist/img/avatar.png -------------------------------------------------------------------------------- /3_7_angular/src/app/message-form/message-form.component.css: -------------------------------------------------------------------------------- 1 | .form { 2 | padding: 10px; 3 | width: 50%; 4 | } 5 | -------------------------------------------------------------------------------- /3_7_angular/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/okachijs/jsframeworkbook/HEAD/3_7_angular/src/favicon.ico -------------------------------------------------------------------------------- /public/img/book_thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/okachijs/jsframeworkbook/HEAD/public/img/book_thumbnail.png -------------------------------------------------------------------------------- /2_4_syntax/typescript/09_type_annotation.ts: -------------------------------------------------------------------------------- 1 | const add = (a: number, b: number): number => { 2 | return a + b; 3 | } 4 | -------------------------------------------------------------------------------- /3_7_angular/src/app/message-feed/message-feed.component.css: -------------------------------------------------------------------------------- 1 | .date { 2 | color: #999; 3 | font-size: .9em; 4 | } 5 | -------------------------------------------------------------------------------- /3_8_vue_js/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/okachijs/jsframeworkbook/HEAD/3_8_vue_js/src/assets/logo.png -------------------------------------------------------------------------------- /4_9_react_native/ReactNativeChat/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'ReactNativeChat' 2 | 3 | include ':app' 4 | -------------------------------------------------------------------------------- /4_9_react_native/ReactNativeChat/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ReactNativeChat", 3 | "displayName": "ReactNativeChat" 4 | } -------------------------------------------------------------------------------- /public/img/title_logo_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/okachijs/jsframeworkbook/HEAD/public/img/title_logo_small.png -------------------------------------------------------------------------------- /2_4_syntax/typescript/11_interface.ts: -------------------------------------------------------------------------------- 1 | function printName(person: {name: string}) { 2 | console.log(person.name); 3 | } 4 | -------------------------------------------------------------------------------- /4_9_react_native/images/rnchat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/okachijs/jsframeworkbook/HEAD/4_9_react_native/images/rnchat.png -------------------------------------------------------------------------------- /2_4_syntax/es2015/22_module/app3.js: -------------------------------------------------------------------------------- 1 | import * as validation from 'lib/validation'; 2 | validation.message_validation(message); 3 | -------------------------------------------------------------------------------- /2_4_syntax/typescript/26_jsx.ts: -------------------------------------------------------------------------------- 1 | function render (nickname: string) { 2 | return
{nickname}
3 | } 4 | -------------------------------------------------------------------------------- /3_8_vue_js/src/store/mutation-types.js: -------------------------------------------------------------------------------- 1 | export const SET_MESSAGES = "SET_MESSAGES" 2 | export const GET_CHANNELS = "GET_CHANNELS" 3 | -------------------------------------------------------------------------------- /3_6_react/src/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './MessageFeed'; 2 | export * from './MessageForm'; 3 | export * from './ChannelList'; 4 | -------------------------------------------------------------------------------- /3_6_react/src_making/v0.3/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './MessageFeed'; 2 | export * from '../../v0.1/components/ChannelList'; 3 | -------------------------------------------------------------------------------- /3_7_angular/src/app/shared/models/user.ts: -------------------------------------------------------------------------------- 1 | export interface User { 2 | id: string; 3 | name: string; 4 | avatar: string; 5 | } 6 | -------------------------------------------------------------------------------- /4_9_react_native/NewProject/rnchat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/okachijs/jsframeworkbook/HEAD/4_9_react_native/NewProject/rnchat.png -------------------------------------------------------------------------------- /4_9_react_native/images/menu_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/okachijs/jsframeworkbook/HEAD/4_9_react_native/images/menu_icon.png -------------------------------------------------------------------------------- /2_4_syntax/es2015/22_module/main.js: -------------------------------------------------------------------------------- 1 | import {Person} from 'lib/person'; 2 | const person = new Person(1, "太郎"); 3 | user.printName(); // 太郎 4 | -------------------------------------------------------------------------------- /4_9_react_native/images/avator_blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/okachijs/jsframeworkbook/HEAD/4_9_react_native/images/avator_blank.png -------------------------------------------------------------------------------- /3_8_vue_js/src/store/getters.js: -------------------------------------------------------------------------------- 1 | export const messages = state => state.messages.reverse() 2 | export const channels = state => state.channels 3 | -------------------------------------------------------------------------------- /2_4_syntax/typescript/13_interface.ts: -------------------------------------------------------------------------------- 1 | // PersonInterface は string 型の name プロパティを持っていると定義 2 | interface PersonInterface { 3 | name: string; 4 | } 5 | -------------------------------------------------------------------------------- /2_4_syntax/typescript/25_jsx.ts: -------------------------------------------------------------------------------- 1 | function render (nickname: string) { 2 | return React.createElement("div", {"class": "nickname"}, nickname) 3 | } 4 | -------------------------------------------------------------------------------- /3_6_react/src_making/v0.9/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './MessageFeed'; 2 | export * from './MessageForm'; 3 | export * from './ChannelList'; 4 | -------------------------------------------------------------------------------- /3_7_angular/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /* SystemJS module definition */ 2 | declare var module: NodeModule; 3 | interface NodeModule { 4 | id: string; 5 | } 6 | -------------------------------------------------------------------------------- /3_8_vue_js/src/components/Chat/index.vue: -------------------------------------------------------------------------------- 1 |