Any vs Object vs Unknown 

- typescript에서 모든 타입은 any type의 서브 타입들이다. 그래서 어떠한 제약도 없는 모든 타입을 받아서 사용할 수 있다. 

- object non privitive type으로 undefined, string, boolean, symbol같은 primitive type을 허용하지 않는다. 대신 null은 허용된다. (null은 태생이 object)

- unknown 타입은 any 타입처럼 어떤값도 넣을 수 있다. 하지만 ts compiler는 unknown 타입에 대한 어떤 오퍼레이션도 허용하지 않는다. 게다가 unknown 타입은 오직 any 타입만 할당 할 수있다.

Unknown type operation 금지
Unknown은 any타입이외에 할당 불가

 

 

자료형 캐스팅 방법

- let strLength: number = (<string>someValue).length;

- let strLength: number = (someValue as string).length;

 

 

readonly vs const

- 두 가지 모두 기존 데이터를 수정할 수 없게 하는 예약어이지만 readonly는 클래스 변수에, const는 메소드 내 지역변수에서 사용된다.

 

 

symbol

- number, string의 non primitive 형태의 데이터를 primitive하게 해주는 역할

- 자바에서 new String(). new Integer()와 같은 것으로 두 개의 비교는 == 로 할 수없다. 왜냐하면 애초에 같은 값이여도 서로 다른 주소를 가리키는 객체가 되기 때문. 유니크한 형태의 primitive를 만들어 주는 것

 

 

declare

- 타입스크립트 컴파일러에게 해당 변수가 어딘가에 선언되어 있따고 알려주는 행위로써 전역변수를 사용할 떄도 사용되고 .d.ts 파일을 만들때 사용

https://stackoverflow.com/questions/35019987/what-does-declare-do-in-export-declare-class-actions

 

import vs require

- 둘다 같은 기능이나 require는 레거시 import 사용 권장

 

https://www.typescriptlang.org/docs/home.html

 

Documentation · TypeScript

Learn everything you need to know about TypeScript. New to TypeScript? # Already familiar with TypeScript? # Having trouble finding what you’re looking for? Tell us so we can better help you!

www.typescriptlang.org

 

'web > Typescript' 카테고리의 다른 글

Typescript 헷갈리는 부분 정리  (0) 2019.09.12


스프링에는 데이터를 
캐시로 보관할 수 있는 캐시 기능을 제공한다. 그 중 대표적으로 사용되는 Ehcache(ehcache-spring-annotation)에 대해 알아보자.



이를 사용하는 가장 대표적인 이유는 다음과 같다.

1. 꾸준하게 동일한 데이터 
2. 조회하여 데이터를 가지고 오는데 비용이 많이 소모되는 경우




[설정방법]

pom.xml

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/net.sf.ehcache/ehcache -->
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.10.4</version>
</dependency>
cs



applicationContext.xml 수정


<import resource="applicationContext-cache.xml" />



applicationContext-cache.xml 추가

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:ehcache="http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring/ehcache-spring-1.1.xsd">
 
<ehcache:annotation-driven />
 
<ehcache:config cache-manager="cacheManager">
<ehcache:evict-expired-elements interval="300" />
</ehcache:config>
 
<bean id="cacheManager"
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="/WEB-INF/cache/ehcache.xml" />
</bean>
 
</beans>
cs




Ehcache 설정 파일 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8"?>
<ehcache
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
maxBytesLocalHeap="32M" maxBytesLocalOffHeap="128M"
maxBytesLocalDisk="0M" updateCheck="false">
 
<cache
name="WedulCache"
maxElementsInMemory="100"
eternal="false"
overflowToDisk="false"
timeToLiveSeconds="30" />
 
</ehcache>
cs




- maxElementsInMemory : 한번에 최대 몇개의 엘리먼트 보관 가능한지 여부
- overflowToDisk : 캐시를 디스크에 쓰기.


캐시가 필요한 부분에 캐시적용



1
2
3
4
5
6
7
8
9
@Cacheable(value="findMemberCache", key="#name")
public Student findByNameCache(String name) { 
  return new Student(201014448"cjung@gmail.com", name);
}
 
@CacheEvict(value = "findMemberCache", key="#name")
public void refresh(String name) { 
  logger.info(name + "의 Cache Clear!");
}
cs





value는 encache.xml에 정의한 캐시 이름이고 key는 해당 캐시의 고유 키이다.
위의 구조는 name별로 캐시가 쌓이는 구조이다.

@CacheEvict는 캐시를 초기화하는 것이다.

※ 비고
ehcache.xml 설정 값.
http://www.ehcache.org/ehcache.xml





+ Recent posts