μ΄λ²μ νλ‘μ νΈλ₯Ό μ§ννλ©΄μ νμλ€λΌλ¦¬ μ½λ©μ»¨λ²€μ μ μ ν΄ μ 리ν΄λ³΄μλ€.
π€νλ‘ νΈμλ μ½λ©μ»¨λ²€μ
β»μ°Έκ³
νλ‘ νΈμλ μ½λ© 컨벀μ
βοΈμλ³μ
: λ³μ, ν¨μ, λ°°μ΄, ν΄λμ€ λ±κ³Ό κ°μ νλ‘κ·Έλλ° μμλ₯Ό ꡬλΆνκ³ μλ³νκΈ° μν΄ μ¬μ©λλ μ΄λ¦
β μ§κ΄μ μΌλ‘ μλ―Έλ₯Ό νμ ν μ μλλ‘ κ°κΈμ μ΄λ©΄ μ½μ΄λ₯Ό μ¬μ©νμ§ μμ΅λλ€.
β νκΈμ μ§λ²μν λ³μλͺ μ μ¬μ©νμ§ μμ΅λλ€.
β 곡백μ νμ©νμ§ μμ΅λλ€.
β μΈμ΄μμ μ¬μ©νλ μμ½μ΄λ₯Ό μ¬μ©νμ§ μμ΅λλ€.
ππ» λ³μ, ν¨μλ μΉ΄λ© μΌμ΄μ€λ‘ μ μΈν©λλ€.
userName, totalAmount, orderName // good
username, TotalAmount, order_name // bad
ππ» λ°°μ΄μ 볡μνμΌλ‘ μ μΈν©λλ€.
ππ» private λ³μλ _λ₯Ό μ λμ¬λ‘ μ μΈν©λλ€.
ππ» HTML νκ·Έλ μλ¬Έμλ‘ μμ±ν©λλ€.
ππ» μμλ μ€λ€μ΄ν¬ μΌμ΄μ€λ₯Ό νμ©ν΄ λλ¬Έμμ _λ₯Ό μ¬μ©ν΄ μ μΈν©λλ€.
const THIS_IS_CONSTANT = 'string';
ππ» propsλ‘ μ λ¬λλ νΈλ€λ¬ ν¨μλ onμΌλ‘ μμν©λλ€.
function Button(props) {
return (
<button onClick={props.onClick} onMouseEnter={props.onMouseEnter}>
Click me
</button>
);
}
const Button = (props) => (
<button onClick={props.onClick} onMouseEnter={props.onMouseEnter}>
Click me
</button>
);
ππ» Boolean νμ λ³μμ μλ³μ λͺ μ κ°κΈμ μ΄λ©΄ λΆμ νμΌλ‘ μ μΈνμ§ μλ κ²μ κΆκ³ ν©λλ€. λν Boolean νμ μ λ³μμ μλ³μλ is, has, can μ μ λμ¬λ₯Ό μ¬μ©νμ¬ μ μΈν©λλ€.
const canOpen = true; //good
const hasChildren = true; //good
const isNotBoolean = false; // bad
cosnt isBoolean = true; // bad
ππ» Enum μ μΈμ νμ€μΉΌ μΌμ΄μ€λ‘ μ μΈν©λλ€.
// good
enum FormMode {
Create = 'create',
Edit = 'edit',
Add = 'add',
}
// bad
enum FORM_MODE {
CREATE = 'create',
EDIT = 'edit',
ADD = 'add',
}
ππ» Interface, type μ μΈ μ μ λμ¬λ₯Ό λΆμ΄μ§ μμ΅λλ€. νκ°λ¦¬μ νκΈ°λ²μ μ¬μ©νμ§ μμ΅λλ€.
// good
interface Server {
sample: string;
}
// bad
interface IServer {
title: string;
value?: string;
}
Function
- ν¨μμ μλ³μλͺ μ νμ μλ©ν±νκ² μ μΈν©λλ€.(μ΄λ€ κΈ°λ₯μ νλ ν¨μμΈμ§ ν¨μλͺ μ λ³΄κ³ μ μ μλλ‘ μ μΈν©λλ€.)
- μ΄λ²€νΈλ₯Ό νΈλ€λ§νλ ν¨μλ handle μ λμ¬λ₯Ό μ¬μ©ν©λλ€.
- λ°νκ°μ΄ booleanμΈ ν¨μλ is μ λμ¬λ₯Ό μ¬μ©ν©λλ€.
- μ΄λ€ κ°μ returnνλ ν¨μλ get μ λμ¬λ₯Ό νμ©ν©λλ€.
- ν¨μλ μ μΈμκ³Ό ννμμ μ¬μ©νμ¬ μ μΈν©λλ€.
- ν¨μ μ μΈμ: function greet() { console.log("Hello!"); } greet(); // "Hello!" μΆλ ₯
- ν¨μ ννμ: function greet() { console.log("Hello!"); } greet(); // "Hello!" μΆλ ₯
- μ΄λ, ν¨μ ννμκ³Ό ν¨μ μμ±μλ‘ μ μΈλ ν¨μλ νΈμ΄μ€ν μ κ°μ΄ ν λΉλμ§ μμ΅λλ€. μ μΈ μ΄μ μ μ¬μ© μ μ€λ₯κ° λ°μ νλ―λ‘ ν¨μλ μ¬μ© μ μ μ μΈν΄μΌ ν©λλ€. ν¨μ μ μΈλ¬Έμ λ³μ μ μΈλ¬Έ λ€μμ μ΅λλ€.
- λ°°μ΄ λ©μλμ μ½λ°± ν¨μλ κ°λ μ±μ μν΄ νμ΄ν ν¨μ(Arrow Function)λ₯Ό μ¬μ©ν©λλ€.
// good
[1, 2, 3].map(x => { const y = x + 1; return x * y; });
// bad
[1, 2, 3].map(function (x) { const y = x + 1; return x * y; });
λ³μ
- var ν€μλλ₯Ό μ¬μ©νμ§ μκ³ , constμ letμ μ¬μ©νμ¬ λ³μλ₯Ό μ μΈν©λλ€.
μ μλ³μ
- λ€μμ€νμ΄μ€λ₯Ό μ¬μ©νμ¬ μ μλ³μλ₯Ό μ΅μννλ©° μ묡μ μΈ μ μλ³μλ μ λλ‘ μ¬μ©νμ§ μμ΅λλ€.
λ°°μ΄κ³Ό κ°μ²΄
- λ°°μ΄κ³Ό κ°μ²΄λ λ°λμ 리ν°λ΄λ‘ μ μΈν©λλ€.
- 리ν°λ΄ νκΈ°λ²μ΄λ? νλ‘κ·Έλλ°μμ κ°μ μ§μ μμ±νμ¬ λ³μλ₯Ό μ΄κΈ°ννκ±°λ κ°μ²΄λ₯Ό μμ±νλ λ°©λ²μ μλ―Ένλ€.
// good
// λ°°μ΄μ 리ν°λ΄λ‘ μ μΈνλ μ
let fruits = ["apple", "banana", "cherry"];
// κ°μ²΄λ₯Ό 리ν°λ΄λ‘ μ μΈνλ μ
let person = {
name: "John Doe",
age: 30,
job: "Developer"
};
// bad
// λ°°μ΄μ μμ±μ ν¨μλ‘ μ μΈνλ μ
let fruits = new Array("apple", "banana", "cherry");
// κ°μ²΄λ₯Ό μμ±μ ν¨μλ‘ μ μΈνλ μ
let person = new Object();
person.name = "John Doe";
person.age = 30;
person.job = "Developer";
- λ°°μ΄ λ³΅μ¬μ μνλ¬Έμ μ¬μ©νμ§ μλλ€.
let items = [1,2,3,4];
var len = items.length;
var itemsCopy = [];
// good
const arr = [...items];
// bad
for (var i = 0; i < len; i++) {
itemsCopy[i] = items[i];
}
βοΈCss in JS
ππ» CSS μ μΈ μ μλ³μ λͺ μ λ³μμ μΉ΄λ© μΌμ΄μ€λ‘ μ μΈν©λλ€.
const textFieldCss = `
font-size: 14px;
`;
ππ» CSSλ₯Ό μ¬μ©ν λλ κ°κΈμ κ°μ²΄κ° μλ ν νλ¦Ώ λ¬Έμμ΄μ νμ©ν©λλ€.
// good
const buttonStyle = `
background: blue;
color: white;
font-size: 14px;
`;
const Button = styled.button`${buttonStyle}`;
// bad
const buttonStyle = {
background: 'blue',
color: 'white',
fontSize: '14px',
};
const Button = styled.button(buttonStyle);
ππ» Styled-Componentsμ μ»΄ν¬λνΈλ₯Ό μ μΈν λ λ³μλͺ μ νμ€μΉΌ μΌμ΄μ€λ‘ μ μΈν©λλ€.
const Wrapper = styled.div`
padding: 20px;
`;
const FormRow = styled.section`
display: flex;
margin-bottom: 15px;
`;
βοΈES6+
ππ» κ°μ²΄μμ μ¬λ¬ νλ‘νΌν°μ μ κ·Όν λλ Destructingμ μ΄μ©ν©λλ€.
function Template({v1, v2, ...args}) {
const A = v1;
};
ππ» λ°°μ΄λ Destructuring μ΄ κ°λ₯ν©λλ€.
// good
const [first, second] = arr;
// bad
const first = arr[0];
const second = arr[1];
βοΈκ³΅ν΅
ππ»μ£Όμμ μ€λͺ νλ €λ ꡬ문μ λ§μΆ° λ€μ¬μ°κΈ° ν©λλ€.
λ¬Έμ₯μ λμ μ£Όμμ μμ±ν κ²½μ°, ν μ€ μ£Όμμ μ¬μ©νλ©° 곡백μ μΆκ°ν©λλ€.
μ¬μ©νμ§ μκ±°λ μλ―Έ μλ μ£Όμμ νμ μ κ±°νμ¬ μ»€λ°ν©λλ€.
// good
function someFunction() {
...
// statementμ κ΄ν μ£Όμ
statements
}
ππ»ν€μλ, μ°μ°μμ λ€λ₯Έ μ½λ μ¬μ΄μ κ³΅λ°±μ΄ μμ΄μΌ ν©λλ€.
// good
var value;
if (typeof str === 'string') {
value = (a + b);
}
// bad
var value;
if(typeof str==='string') {
value=(a+b);
}
ππ»μ½€λ§ λ€μμ κ°μ΄ μ¬ κ²½μ° κ³΅λ°±μ΄ μμ΄μΌ ν©λλ€.
// Good
var arr = [1, 2, 3, 4];
// Good
someFunction(a, b, {
prop1: 1,
prop2: 2,
prop3: 3
});
// Bad - κ΄νΈ μμ 곡백
if ( typeof str === 'string' )
// Bad - κ΄νΈ μ 곡백, μ½€λ§ λ€ κ³΅λ°± μμ
var arr = [ 1,2,3,4 ];
// Bad - κ°μ²΄μ λ«λ κ΄νΈ λ€μμ κ°ν
someFunction(a, b, {
prop1: 1,
prop2: 2,
prop3: 3
}
);
ππ»μ£Όμμ μ€λͺ νλ €λ ꡬ문μ λ§μΆ° λ€μ¬μ°κΈ° ν©λλ€.
λ¬Έμ₯μ λμ μ£Όμμ μμ±ν κ²½μ°, ν μ€ μ£Όμμ μ¬μ©νλ©° 곡백μ μΆκ°ν©λλ€.
μ¬μ©νμ§ μκ±°λ μλ―Έ μλ μ£Όμμ νμ μ κ±°νμ¬ μ»€λ°ν©λλ€.
'π»μΉ(Web) > React' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[TypeScript]TypeScript μ΄ν΄νκΈ°(1) - νμ μ§ν© / μΆλ‘ / λ¨μΈ (0) | 2024.09.04 |
---|---|
[TypeScript]TypeScriptμ κ°μ λ° κΈ°μ΄ (3) | 2024.09.03 |
[React]Custom Hook (0) | 2024.06.28 |
[React]Vite, Redux (0) | 2024.06.27 |
[React]μ»΄ν¬λνΈμ μ¬μ¬μ©μ±/μΌκ΄μ± (0) | 2024.06.25 |