programing

TypeScript의 콘솔 입력

newstyles 2023. 6. 18. 12:27

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