TypeScript의 콘솔 입력
TypeScript에서 사용자의 콘솔 입력을 받으려면 어떻게 해야 합니까?
예를 들어 Python에서는 다음을 사용합니다.
userInput = input("Enter name: ")
TypeScript에 해당하는 것은 무엇입니까?
사용할 수 있습니다.readline
노드 모듈.노드 설명서의 리드라인을 참조하십시오.
TypeScript에서 읽기 줄을 가져오려면 별표(*
) 성격.예:
import * as readline from 'readline';
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('Is this example useful? [y/n] ', (answer) => {
switch(answer.toLowerCase()) {
case 'y':
console.log('Super!');
break;
case 'n':
console.log('Sorry! :(');
break;
default:
console.log('Invalid answer!');
}
rl.close();
});
리드라인의 약속 API(async/wait)를 사용할 수도 있습니다.
import * as readline from 'readline/promises';
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
try {
// NOTE: the second parameter (the timeout) is optional.
const answer = await rl.question('Is this example useful? [y/n] ', {
signal: AbortSignal.timeout(10_000) // 10s timeout
});
switch(answer.toLowerCase()) {
case 'y':
console.log('Super!');
break;
case 'n':
console.log('Sorry! :(');
break;
default:
console.log('Invalid answer!');
}
} finally {
rl.close();
}
참고: 시간 초과는 선택 사항입니다(예:await rl.question('...')
).
브라우저에서 다음과 같은 프롬프트를 사용합니다.
var userInput = prompt('Please enter your name.');
노드에서 라인 읽기를 사용할 수 있습니다.
var readline = require('readline');
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question("What do you think of Node.js? ", function(answer) {
console.log("Thank you for your valuable feedback:", answer);
rl.close();
});
TypeScript는 JavaScript에 선택적 정적 입력 및 변환 기능만 추가합니다.이것은 순전히 컴파일 타임 아티팩트입니다. 런타임에 TypeScript가 없기 때문에 이 질문은 TypeScript가 아니라 JavaScript에 대한 것입니다.
콘솔에서 입력을 수락하는 것에 대해 이야기하는 경우 node.js 응용 프로그램에 대해 이야기하는 것일 수 있습니다.콘솔에서 값 읽기에서 대화형 솔루션은 stdin을 사용하는 것입니다.
var stdin = process.openStdin();
stdin.addListener("data", function(d) {
// note: d is an object, and when converted to a string it will
// end with a linefeed. so we (rather crudely) account for that
// with toString() and then substring()
console.log("you entered: [" + d.toString().trim() + "]");
});
업데이트되고 간결한 버전을 찾는 사람이 있다면...
'readline' 패키지를 사용하고 있으므로 먼저yarn add readline
또는npm i readline
.
먼저 별도의 파일(즉, "question.ts")에 저장합니다.
import {createInterface} from "readline";
const rl = createInterface({
input: process.stdin,
output: process.stdout
});
const question = (questionText: string) =>
new Promise<string>(resolve => rl.question(questionText, resolve))
.finally(() => rl.close());
export default question;
그리고 나서.
import question from "./question"
const name = await question("What is your name?");
const answer = await question("Are you sure? (y/N) ")
.then(answer => answer.toLowerCase() == 'y')
@Elie G & @Fenton에서 영감을 받아 swift, kotlin, C...와 같은 "readLine()" 기능을 사용할 준비가 되었습니다.
async function readLine(): Promise<string> {
const readLine = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
let answer = ""
readLine.question("", (it: string) => {
answer = it
readLine.close()
})
while (answer == "") { await sleep(100) }
return(answer)
}
// ——— Call
async function aMiscFunction() {
let answer = await readLine()
console.log(answer)
}
/!\ if you call from a function, it must be declared 'async'
도움이 될 거예요!
const prompt = require('prompt-sync')()
let nota1 = parseInt(prompt('digite a 1ª nota: '));
let nota2 = parseInt(prompt('digite a 2ª nota: '));
let nota3 = parseInt(prompt('digite a 3ª nota: '));
let media = (nota1+nota2+nota3)/3
if ((media >= 0)&&(media < 3)) {
console.log(`Sua média foi ${media.toFixed(1)}, seu resultado é: Reprovado!`)
} else if ((media>=3)&&(media < 7)) {
console.log(`Sua média foi ${media.toFixed(1)}, seu resultado é: Exame!`)
} else if ((media >=7)&&(media <=10)){
console.log(`Sua média foi ${media.toFixed(1)}, seu resultado é: Aprovado!`)
실제로 입력 요소로 사용하는 HTML 요소에 따라 다릅니다.일반적으로 다음을 사용하여 입력을 읽을 수 있습니다.prompt()
의 도움으로window
물건.확인을 클릭하면 사용자가 입력한 값이 반환되고 반환됩니다.null
를 클릭합니다.
class Greeter {
greet() {
alert("Hello "+this.getName())
}
getName() {
return prompt("Hello !! Can I know your name..??" );;
}
}
let greeter = new Greeter();
let button = document.createElement('button');
button.textContent = "Say Hello";
button.onclick = function() {
(greeter.greet());
}
document.body.appendChild(button);
언급URL : https://stackoverflow.com/questions/33858763/console-input-in-typescript
'programing' 카테고리의 다른 글
Git에 있는 프로젝트의 모든 개발자 나열 (0) | 2023.06.18 |
---|---|
만료일을 기준으로 중복된 레코드를 선택적으로 삭제하는 SQL (0) | 2023.06.18 |
데이터 프레임에서 변수가 많은 공식을 간단하게 작성하는 방법은 무엇입니까? (0) | 2023.06.18 |
GUI 없이 Excel(xls) 파일을 쉼표로 구분된(csv) 파일로 변환 (0) | 2023.06.18 |
Duplicate User Form in Excel VBA (0) | 2023.06.18 |